[TOC]

0x00 前言简述

1.Kuboard 介绍

描述: Kuboard 是一款免费的 Kubernetes 管理工具,提供了丰富的功能,结合已有或新建的代码仓库、镜像仓库、CI/CD工具等,可以便捷的搭建一个生产可用的 Kubernetes 容器云平台,轻松管理和运行云原生应用。

您也可以直接将 Kuboard 安装到现有的 Kubernetes 集群,通过 Kuboard 提供的 Kubernetes RBAC 管理界面,将 Kubernetes 提供的能力开放给您的开发/测试团队。

Kuboard 提供的功能有:

  • Kubernetes 基本管理功能
  • Kubernetes 问题诊断
  • Kubernetes 存储管理
    • 通过 ceph-csi 对接 CephFS
    • 通过 ceph-csi 对接 Rook 安装的 CephFS
    • 通过 nfs-client-provisioner 对接 NFS 类型的存储
    • 对接其他类型的存储
  • 认证与授权
    • 内建用户库认证
    • GitLab / GitHub 单点登录
    • LDAP 认证
    • 完整的 RBAC 权限管理
  • Kuboard 特色功能
    • Kuboard 官方套件
      • Grafana+Prometheus 资源监控
      • Grafana+Loki+Promtail 日志聚合
    • Kuboard 自定义名称空间布局
    • Kuboard 中英文语言包

2.Kuboard v3.x 版本

描述: Kuboard v3.x 兼容性涉及 Kubernetes 版本 (v1.13 ~ v1.20)

Kuboard v3.x 功能特点:

  • 支持 Kubernetes 多集群管理
  • 支持 amd64 (x86) 架构和 arm68 (armv8) 架构的 CPU;


Kuboard v3.x 与 v2.0.x 对比:

  • 1.v3.x 不再部署在 Kubernetes 中,而是作为一个独立的容器运行。
  • 2.由于运行模式不同 v2.0.x 与 v3.x 可以同时存在互不干扰, 其次是 v3.x 将 Kuboard 部署的大部分内容从 kube-system 名称空间迁移到 kuboard 名称空间。

Tips : 如果您最终决定从 Kuboard v2.0.x 迁移到 Kuboard v3,请在 Kuboard v2.0.x 的界面中卸载掉 Kuboard 套件,并在 Kuboard v3 中重新安装 Kuboard 套件。


0x01 安装部署

1.安装步骤

  • 1) k8s集群部署说明获取部署 Kuboard 所需的 YAML 文件:
    1
    curl -o kuboard-v3.yaml https://addons.kuboard.cn/kuboard/kuboard-v3.yaml
  • 2.编辑 kuboard-v3.yaml 文件中的配置,该部署文件中,有两处配置必须修改:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    # 关于如下参数的解释,请参考文档 https://kuboard.cn/install/v3/install-built-in.html
    KUBOARD_ENDPOINT: 'http://192.168.12.108:30567'

    # 请填写一个有效的 StorageClass name
    storageClassName: please-provide-a-valid-StorageClass-name-here

    # 端口设置
    # Kuboard v3 容器对外暴露三个端口:
    # 80 Kuboard Web 服务端口,TCP;
    # 443 Kuboard Web 服务端口,TCP;
    # 10081 Kuboard Agent Server 端口,TCP 、 UDP。
    spec:
    ports:
    - name: webui
    nodePort: 30567
    port: 80
    protocol: TCP
    targetPort: 80
    - name: agentservertcp
    nodePort: 30568
    port: 10081
    protocol: TCP
    targetPort: 10081
    - name: agentserverudp
    nodePort: 30568
    port: 10081
    protocol: UDP
    targetPort: 10081
    # 端口网络监听
    # tcp 0 0 0.0.0.0:30567 0.0.0.0:* LISTEN -
    # tcp 0 0 0.0.0.0:30568 0.0.0.0:* LISTEN -
  • 3.部署到 Kubernetes 集群

    1
    kubectl create -f kuboard-v3.yaml

Tips : 此 YAML 文件向 Kubernetes 中部署了一个三副本的 StatefulSet kuboard-etcd 和一个单副本的 Deployment kuboard-v3;其中 Deployment kuboard-v3 暂时不支持多副本,请保持其 replicas 字段为 1,将在后续的版本升级中解决 kuboard-v3 多副本部署的问题。


2.配置步骤

  • 1) 访问 Kuboard 在浏览器中打开链接 http://192.168.12.108:30567 ,输入初始用户名和密码登录
    1
    2
    用户名: admin
    密码: Kuboard123
WeiyiGeek.Kuboard多集群管理

WeiyiGeek.Kuboard多集群管理

  • 2) 为单点登录的用户/用户组授权(由于在刚开发阶段所以还有些不成熟)
    描述: 当您配置 Kuboard 与 gitlab / github / ldap 实现单点登录以后,Kuboard 并不管理用户基本信息、用户组信息、用户与用户组之间的映射信息
    为了让单点登录的用户获得合适的权限,您需要在 Kuboard 中为对应的用户/用户组授权:
    1
    2
    3
    - 为用户添加角色绑定
    - 切换到 角色绑定(全局)
    - 创建角色绑定
WeiyiGeek.授权

WeiyiGeek.授权

Tips : 全局角色绑定,用户可以在所有 Kubernetes 集群范围内执行该角色授予的权限;
Tips : 集群角色绑定,用户只能在指定的 Kubernetes 集群范围内执行该角色授予的权限;
Tips : 通常以用户组授权比为单个用户授权更为灵活和方便

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
; 使用 nginx 作为反向代理,配置文件样例
http {
# 您需要的其他配置
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}

server {
listen 80;
server_name kuboard.this-is-a-sample.com; # 替换成你的域名

location / {
proxy_pass http://192.168.32.205:10080/; # 替换成你的 Kuboard IP 地址和端口,应该是 IP 地址,而不是 KUBOARD_ENDPOINT 参数的值
gzip on;
}

location /k8s-ws/ {
proxy_pass http://192.168.32.205:10080/k8s-ws/; # 替换成你的 Kuboard IP 地址和端口
proxy_http_version 1.1;
proxy_pass_header Authorization;
proxy_set_header Upgrade "websocket";
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Proto https; # 如果您在反向代理上启用了 HTTPS
}

location /k8s-proxy/ {
proxy_pass http://192.168.32.205:10080/k8s-proxy/; # 替换成你的 Kuboard IP 地址和端口
proxy_http_version 1.1;
proxy_pass_header Authorization;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header X-Forwarded-Proto https; # 如果您在反向代理上启用了 HTTPS
gzip on;
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}
  • 4) SSL 证书配置
    描述: Web 服务端口在如下两种情况下需要配置 SSL 证书, 一是通过公网访问 Kuboard 界面,提高安全性;二是为被纳管的 Kubernetes 配置 OIDC与 Kuboard 实现单点登录(如不配置,通过 Kuboard 管理 Kubernetes 时,Kubernetes 只能将用户识别成 kuboard-admin 或者 kuboard-user 这两个 ServiceAccount 当中的一个)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    # 已有证书 - Certificates
    sudo docker run -d \
    --restart=unless-stopped \
    -v /hostpath/to/your/server.crt:/etc/certs/my.company.com/server.crt \
    -v /hostpath/to/your/server.key:/etc/certs/my.company.com/server.key \
    -e KUBOARD_TLS_CERT=/etc/certs/my.company.com/server.crt \
    -e KUBOARD_TLS_KEY=/etc/certs/my.company.com/server.key \
    -p 10080:80/tcp \
    -p 443:443/tcp \
    -p 10081:10081/tcp \
    -p 10081:10081/udp \
    -e KUBOARD_ENDPOINT="http://kuboard.this-is-a-sample.com:10080" \
    -e KUBOARD_AGENT_SERVER_UDP_PORT="10081" \
    -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \
    -v /root/kuboard-data:/data \
    eipwork/kuboard:v3-beta

    # 在线申请 - Lets Encrypt
    sudo docker run -d \
    --restart=unless-stopped \
    -p 10080:80/tcp \
    -p 443:443/tcp \
    -p 10081:10081/tcp \
    -p 10081:10081/udp \
    # 第 7 行激活 Kuboard 中的 Lets Encrypt 客户端;
    -e KUBOARD_TLS_AUTOCERT=true \
    # 第 8 行指定 Lets Encrypt 颁发证书时对应的域名;
    -e KUBOARD_TLS_DOMAIN=kuboard.this-is-a-sample.com \
    -e KUBOARD_ENDPOINT="http://kuboard.this-is-a-sample.com:10080" \
    -e KUBOARD_AGENT_SERVER_UDP_PORT="10081" \
    -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \
    -v /root/kuboard-data:/data \
    eipwork/kuboard:v3-beta

Tips : Kuboard Agent Server 端口使用 TCP、UDP 通信,是私有协议,已经自动配置了 TLS 加密连接,无需用户额外配置证书。(该 Agent Server 端口无需暴露到公网)
Tips : 如果通过 nginx 反向代理访问 Kuboard,建议在 nginx 中配置 SSL 证书;
Tips : 如果您的 Kuboard 打算直接在公网上访问,建议使用 Lets Encrypt;
Tips : 使用 Lets Encrypt 时,请将 kuboard.this-is-a-sample.com 域名指向您的 Kuboard 所在宿主机的公网 IP,并且确保 80, 443 端口开放。Kuboard 启动后,在您第一次访问 https://kuboard.this-is-a-sample.com 时,Lets Encrypt 将自动申请证书(浏览器上显示第一次访问将失败)。等候 1-5 分钟时间,再次访问 https://kuboard.this-is-a-sample.com 时,您将能够成功访问,证书也已经颁发并且自动配置好;通常免费证书有效期是一年时间,证书到期前一个月,系统会自动为您更新证书,无需您额外做任何操作。


3.升级配置

描述: 将 kuboard v3 更新到最新版本。

方式1.Docker 容器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 1.停止已有 kuboard 容器
docker stop $(docker ps -a | grep "eipwork/kuboard" | awk '{print $1 }')
docker rm $(docker ps -a | grep "eipwork/kuboard" | awk '{print $1 }')

# 2.使用新版本的镜像启动 kuboard
sudo docker run -d \
--restart=unless-stopped \
--name=kuboard \
-p 10080:80/tcp \
-p 10081:10081/udp \
-p 10081:10081/tcp \
-e KUBOARD_ENDPOINT="http://kuboard.this-is-a-sample.com:10080" \
-e KUBOARD_AGENT_SERVER_UDP_PORT="10081" \
-e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \
-v /root/kuboard-data:/data \
eipwork/kuboard:v3.1.0.3


方式2.Kubernetes 集群

1
2
# 更新到最新版本
kubectl set image -n kuboard deployment/kuboard-v3 kuboard=swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3


0x02 使用实践

1.集群添加

  • Step 1.添加已有 Kubernetes 集群到 Kuboard(注意Kubernetes 集群,版本不低于 v1.13),点击首页的添加集群。输入如图下所示(注意选择Agent连接方式)

    WeiyiGeek.k8s cluster add

    WeiyiGeek.k8s cluster add

  • Step 2.请安装 kuboard-agent 然后在将要被导入的 Kubernetes 集群执行如下指令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    curl -k 'http://192.168.12.108:30567/kuboard-api/cluster/k8s-test.weiyigeek/kind/KubernetesCluster/k8s-test.weiyigeek/resource/installAgentToKubernetes?token=OIrni4gJpu4hfeAMyJTxCL0gyMZ0Ps1o' > kuboard-agent.yaml
    kubectl apply -f ./kuboard-agent.yaml
    # namespace/kuboard created
    # serviceaccount/kuboard-admin created
    # clusterrolebinding.rbac.authorization.k8s.io/kuboard-admin-crb created
    # serviceaccount/kuboard-viewer created
    # clusterrolebinding.rbac.authorization.k8s.io/kuboard-viewer-crb created
    # deployment.apps/kuboard-agent created
    # deployment.apps/kuboard-agent-2 created
    # weiyigeek@master-k8s:~$

    # 在 被导入的Kubernetes 集群下执行查看你
    $ kubectl get pod -n kuboard
    NAME READY STATUS RESTARTS AGE
    kuboard-agent-2-5f4bcf8b45-d4gr9 1/1 Running 0 33s
    kuboard-agent-784ccf8f5c-lm7fc 1/1 Running 0 33s
  • Step 3.最后点击我已执行导入命令(执行上面的命令后也会自动探测), 添加完集群后会在Kubernetes 集群列表中看它。

    WeiyiGeek.集群添加

    WeiyiGeek.集群添加

  • Step 4.如果您已经执行了导入命令,但仍然处于等待导入状态,有可能是因为 kuboard-agent 没有启动,或者 kuboard-agent 不能连接 kuboard-server。请按照下面的提示检查网络连通性以及 kuboard-agent 的日志。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 1.请测试连通性 UDP
    nc -vuz 192.168.12.108 30568
    # Connection to 192.168.12.108 30568 port [udp/*] succeeded

    # 2.请检查 kuboard-agent 状态
    kubectl get pods -n kuboard -o wide -l "k8s.kuboard.cn/name in (kuboard-agent, kuboard-agent-2)"

    # 3.请检查 kuboard-agent 日志
    kubectl logs -f -n kuboard -l "k8s.kuboard.cn/name in (kuboard-agent, kuboard-agent-2)"
  • Step 5.连接完成后与v2.x一样可以对集群进行管理包括(资源配置和应用程序应用以及存储的创建)

WeiyiGeek.集群管理

WeiyiGeek.集群管理

  • Step 5.学习上面生成的 Kuboard-agent.yaml 资源清单编写

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    # 名称空间创建
    ---
    apiVersion: v1
    kind: Namespace
    metadata:
    name: kuboard

    # 服务用户创建
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
    name: kuboard-admin
    namespace: kuboard

    # 集群角色绑定RBAC-将k8s集群管理员的角色绑定到ServiceAccount中的kuboard-admin.
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
    name: kuboard-admin-crb
    roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: ClusterRole
    name: cluster-admin
    subjects:
    - kind: ServiceAccount
    name: kuboard-admin
    namespace: kuboard

    # 下面的浏览用户的权限绑定的是集群浏览的角色
    ---
    apiVersion: v1
    kind: ServiceAccount
    metadata:
    name: kuboard-viewer
    namespace: kuboard

    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
    name: kuboard-viewer-crb
    roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: ClusterRole
    name: view
    subjects:
    - kind: ServiceAccount
    name: kuboard-viewer
    namespace: kuboard

    # 利用 Deployment 控制器来 部署 kuboard-agent 容器 (此处采用两个Deployment控制器来进行不同权限分离)
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
    annotations:
    k8s.kuboard.cn/ingress: "false"
    k8s.kuboard.cn/service: none
    k8s.kuboard.cn/workload: kuboard-agent
    labels:
    k8s.kuboard.cn/layer: cloud
    k8s.kuboard.cn/name: kuboard-agent
    name: kuboard-agent
    namespace: kuboard
    spec:
    replicas: 1
    selector:
    matchLabels:
    k8s.kuboard.cn/layer: cloud
    k8s.kuboard.cn/name: kuboard-agent
    template:
    metadata:
    labels:
    k8s.kuboard.cn/layer: cloud
    k8s.kuboard.cn/name: kuboard-agent
    spec:
    serviceAccountName: kuboard-admin
    # 容忍在master节点也运行
    tolerations:
    - effect: NoSchedule
    key: node-role.kubernetes.io/master
    operator: Exists
    # 容器定义设置
    containers:
    - env:
    - name: KUBOARD_ENDPOINT
    value: "http://192.168.12.108:30567"
    - name: KUBOARD_AGENT_HOST
    value: "192.168.12.108"
    - name: KUBOARD_AGENT_PORT
    value: "30568"
    - name: KUBOARD_AGENT_REMOTE_PORT
    value: "35002"
    - name: KUBOARD_AGENT_PROTOCOL
    value: "tcp"
    - name: KUBOARD_AGENT_PROXY
    value: ""
    - name: KUBOARD_K8S_CLUSTER_NAME
    value: "dev-k8s.weiyieek"
    - name: KUBOARD_AGENT_KEY
    value: "32b7d6572c6255211b4eec9009e4a816"
    - name: KUBERNETES_TOKEN_NAME
    value: "kuboard-admin"
    - name: KUBOARD_ANONYMOUS_TOKEN
    value: "WoMzrTCxYCoCPxZ91aX0v8d63ycPwFJ3"
    image: "swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard-agent:v3"
    imagePullPolicy: Always
    # 生存周期验证
    livenessProbe:
    exec:
    command:
    - /health.sh
    failureThreshold: 3
    initialDelaySeconds: 5
    periodSeconds: 60
    successThreshold: 1
    timeoutSeconds: 1
    name: kuboard-agent
    restartPolicy: Always
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
    annotations:
    k8s.kuboard.cn/ingress: "false"
    k8s.kuboard.cn/service: none
    k8s.kuboard.cn/workload: kuboard-agent-2
    labels:
    k8s.kuboard.cn/layer: cloud
    k8s.kuboard.cn/name: kuboard-agent-2
    name: kuboard-agent-2
    namespace: kuboard
    spec:
    replicas: 1
    selector:
    matchLabels:
    k8s.kuboard.cn/layer: cloud
    k8s.kuboard.cn/name: kuboard-agent-2
    template:
    metadata:
    labels:
    k8s.kuboard.cn/layer: cloud
    k8s.kuboard.cn/name: kuboard-agent-2
    spec:
    serviceAccountName: kuboard-viewer
    tolerations:
    - effect: NoSchedule
    key: node-role.kubernetes.io/master
    operator: Exists
    containers:
    - env:
    - name: KUBOARD_ENDPOINT
    value: "http://192.168.12.108:30567"
    - name: KUBOARD_AGENT_HOST
    value: "192.168.12.108"
    - name: KUBOARD_AGENT_PORT
    value: "30568"
    - name: KUBOARD_AGENT_REMOTE_PORT
    value: "35002"
    - name: KUBOARD_AGENT_PROTOCOL
    value: "tcp"
    - name: KUBOARD_AGENT_PROXY
    value: ""
    - name: KUBOARD_K8S_CLUSTER_NAME
    value: "dev-k8s.weiyieek"
    - name: KUBOARD_AGENT_KEY
    value: "32b7d6572c6255211b4eec9009e4a816"
    - name: KUBERNETES_TOKEN_NAME
    value: "kuboard-viewer"
    - name: KUBOARD_ANONYMOUS_TOKEN
    value: "WoMzrTCxYCoCPxZ91aX0v8d63ycPwFJ3"
    image: "swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard-agent:v3"
    imagePullPolicy: Always
    livenessProbe:
    exec:
    command:
    - /health.sh
    failureThreshold: 3
    initialDelaySeconds: 5
    periodSeconds: 60
    successThreshold: 1
    timeoutSeconds: 1
    name: kuboard-agent
    restartPolicy: Always
  • Step 6.我将所有的kubernetes集群都加入到kuboard进行多集群管理

    1
    2
    3
    Kubernetes master is running at https://weiyigeek-lb-vip.k8s:16443  # 高可用
    Kubernetes master is running at https://k8s-test.weiyigeek:6443
    Kubernetes control plane is running at https://dev-k8s.weiyieek:6443
WeiyiGeek.Kubernetes 集群列表

WeiyiGeek.Kubernetes 集群列表


2.集群管理使用

  • Step 1.选择k8s-test.weiyigeek集群->default名称空间->常用操作->从YAML中创建。

  • Step 2.在Kuboiard中创建一个Nginx服务应用。
    从 YAML 创建的资源清单将此输入: (注意为了便于管理建议控制器名称与服务发现名称设置一样)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    # 字典设置
    ---
    apiVersion: v1
    kind: ConfigMap
    metadata:
    labels:
    app: nginx
    name: nginx-config
    namespace: default
    data:
    name: WeiyiGeek

    # Deployment 控制器 & 初始化容器值得学习
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: nginx-demo
    namespace: default
    labels:
    app: nginx
    spec:
    replicas: 1
    selector:
    matchLabels:
    app: nginx
    template:
    metadata:
    labels:
    app: nginx
    spec:
    containers:
    - name: nginx
    image: nginx:latest
    volumeMounts:
    - name: web
    mountPath: "/usr/share/nginx/html"
    initContainers:
    - name: init
    image: busybox:1.33.0
    command: ['sh', '-c', "env;echo ConfigMap:${MSG}--HostName-${HOSTNAME} > /usr/share/nginx/html/index.html"]
    volumeMounts:
    - name: web
    mountPath: "/usr/share/nginx/html"
    env:
    - name: MSG
    valueFrom:
    configMapKeyRef:
    name: nginx-config
    key: name
    volumes:
    - name: web
    emptyDir: {}
    ---
    apiVersion: v1
    kind: Service
    metadata:
    name: nginx-demo
    namespace: default
    labels:
    app: nginx
    spec:
    selector:
    app: nginx
    type: NodePort
    ports:
    - name: nginx-port
    protocol: TCP
    port: 80
    nodePort: 30000
    targetPort: 80
WeiyiGeek.yaml部署

WeiyiGeek.yaml部署

  • Step 3.部署结果访问http://192.168.12.111:30000/地址返回界面如下:
WeiyiGeek.部署结果

WeiyiGeek.部署结果

  • Step 4.查看我们资源清单创建的ConfigMap,点击配置中心->配置字典->我们可以通过资源清单和UI来创建
WeiyiGeek.kuboard-ConfigMap

WeiyiGeek.kuboard-ConfigMap