数据平台组件部署与配置指南
立即解锁
发布时间: 2025-08-30 00:12:51 阅读量: 7 订阅数: 20 AIGC 

# 数据平台组件部署与配置指南
## 1. Elasticsearch 数据类型推断与 Logstash 功能
当没有模板与字段或索引匹配时,Elasticsearch 会尽力猜测数据类型。可以使用以下 `curl` 命令查看为新索引生成的默认映射:
```bash
$ curl http://localhost:9200/apk8s-messages-*/_mapping
```
在本集群配置的 Elasticsearch 7.1.1 中,`user` 字段被分配为 `long` 数值类型,`msg` 字段被索引为文本类型。
Logstash 在处理高速大量数据的平台中起着至关重要的作用,它能够缓冲并管理来自 Elasticsearch 索引操作的背压。即使在小型集群中,Logstash 也可以扩展到十几个或更多节点,每个节点将数据消费并缓冲到单个 Elasticsearch 节点中。
## 2. Kibana 部署与配置
Kibana 是 ELK 栈的前端组件,能与 Elasticsearch 无缝集成,是调试、开发和可视化 Elasticsearch 数据的优秀工具。不过,Kibana 只能与 Elasticsearch 配合使用。在实际应用中,常将 Kibana 用作 Elasticsearch 的内部开发和调试工具,同时采用更通用的解决方案进行跨平台的可视化和分析。
### 2.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
```
### 2.2 创建 ConfigMap
创建 `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 ConfigMap:
```bash
$ kubectl apply -f 20-configmap.yml
```
### 2.3 创建 Kibana Deployment
创建 `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 Deployment:
```bash
$ kubectl apply -f 30-deployment.yml
```
### 2.4 创建 Kibana Ingress
创建 `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 Ingress:
```bash
$ kubectl apply -f 50-ingress.yml
```
此 Ingress 将 Kibana 暴露在 `https://kib.data.dev4.apk8s.dev`,并使用基本认证进行安全保护,`sysop-basic-auth` 包含基本认证的用户名和密码。
## 3. 数据实验室相关组件部署
### 3.1 Keycloak 部署与配置
Keycloak 是 Red Hat 赞助的免费开源身份和访问管理应用程序,可创建和管理用户账户,或连接到现有的 LDAP 或 Active Directory。第三方应用程序可以通过 OpenID Connect、OAuth 2.0 和 SAML 2.0 对用户进行身份验证。
#### 3.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 Web 服务:
```bash
$ kubectl apply -f 10-service.yml
```
#### 3.1.2 创建 Secret
创建 `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 Secret:
```bash
$ kubectl apply -f 10-service.yml
```
#### 3.1.3 创建 Keycloak Deployment
创建 `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
value: "true"
- name: KEYCLOAK_HOSTNAME
value: "auth.data.dev4.apk8s.dev"
- name: KEYCLOAK_USER
valueFrom:
```
0
0
复制全文
相关推荐










