Практика установки инструмента управления несколькими кластерами Kubernetes Kuboard
Практика установки инструмента управления несколькими кластерами Kubernetes Kuboard

[TOC]

0x00 Краткое введение к предисловию

1.Введение в Куборд

описывать: Kuboard это бесплатно Kubernetes управлятьинструмент,Обеспечивает богатый функционал,Объедините существующие илиНовое хранилище кода、Зеркальный склад、Инструменты CI/CDждать,Вы можете легко создать готовую к использованию Kubernetes Контейнерная облачная платформа упрощает управление и запуск облачных приложений.

Вы также можете установить Kuboard непосредственно в существующий кластер Kubernetes и открыть возможности, предоставляемые Kubernetes, вашей команде разработки/тестирования через интерфейс управления Kubernetes RBAC, предоставляемый Kuboard.

Функции, предоставляемые 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.Куборд 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 пространство имен.

Советы: Если вы наконец решите перейти с Kuboard v2.0.x на Kuboard v3, удалите пакет Kuboard в интерфейсе Kuboard v2.0.x и переустановите пакет Kuboard в Kuboard v3.


0x01 Установка и развертывание

1. Этапы установки

1) Инструкции по развертыванию кластера k8s. Получите файлы YAML, необходимые для развертывания Kuboard:

Язык кода:javascript
копировать
curl -o kuboard-v3.yaml https://addons.kuboard.cn/kuboard/kuboard-v3.yaml

2. Отредактируйте конфигурацию в файле kuboard-v3.yaml. В этом файле развертывания необходимо изменить две конфигурации:

Язык кода:javascript
копировать
# Объяснение следующих параметров можно найти в документации. 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.

Язык кода:javascript
копировать
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 , введите исходное имя пользователя и пароль для входа в систему

Язык кода:javascript
копировать
имя пользователя: admin
пароль: Kuboard123

Управление несколькими кластерами WeiyiGeek.Kuboard

2) для Единый входпользователей/Авторизация группы пользователей(потому чтосуществовать Он находится только на стадии разработки, поэтому еще немного незрелый.) описывать: Когда вы настраиваете Kuboard и gitlab / github / ldap После внедрения единого входа Kuboard Он не включает базовую информацию о пользователях, информацию о группах пользователей и информацию о сопоставлении между пользователями и группами пользователей. Чтобы пользователи единого входа имели соответствующие разрешения, вам необходимо Kuboard Авторизуйте соответствующего пользователя/группу пользователей в:

Язык кода:javascript
копировать
- Добавить привязки ролей для пользователей
- переключиться на Привязка роли (глобальная)
- Создать риг персонажа

WeiyiGeek.Авторизация

Tips : Глобальная привязка ролей, пользователи могут находиться во всех Kubernetes Выполнять разрешения, предоставленные этой ролью, на уровне всего кластера; Tips : Привязка роли кластера, пользователи могут работать только в указанной Kubernetes Выполнять разрешения, предоставленные этой ролью, на уровне всего кластера; Tips : Обычно сАвторизация группы пользователей比дляАвторизация одного пользователя более гибкая и удобная.

Язык кода:javascript
копировать
; использовать 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 Когда,Кубернетес Пользователи могут быть идентифицированы только как kuboard-admin или kuboard-user эти двое ServiceAccount один из них)

Язык кода:javascript
копировать
# Уже есть Сертификат - 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 Обратный доступ к прокси Куборд, рекомендуется nginx середина Конфигурация SSL Сертификат; Tips : Если ваш Kuboard Если вы планируете выходить в сеть непосредственно в общедоступном Интернете, рекомендуется использоватьиспользовать Lets Encrypt; Tips : использовать Lets Encrypt когда, пожалуйста kuboard.this-is-a-sample.com доменное имя указывает на ваш Kuboard Публичная сеть хост-машины, где она расположена. IP и убедитесь 80, 443 Порт открыт. Куборд После запуска,существоватьты Нет.один раздоступ https://kuboard.this-is-a-sample.com Когда, давай Encrypt Воля Автоматическое применение Сертификат(отображается в браузере Нет.один раздоступ Волянеудача)。ждать候 1-5 минуты, снова доступ https://kuboard.this-is-a-sample.com час,Вы, Воля, сможете получить доступ,Сертификат также выдается автоматически. Конфигурация хорошая; обычно бесплатный Сертификат действителен в течение одного года.,За месяц до истечения срока действия Сертификата,Система автоматически обновит для вас Сертификат.,Никаких дополнительных действий с вашей стороны не требуется.

3. Обновление конфигурации

описывать: Воля kuboard v3 Обновите до последней версии。

Способ 1. Докер контейнер

Язык кода:javascript
копировать
# 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. Кубернетес кластер

Язык кода:javascript
копировать
# Обновите до последней версии
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.),Нажмите Добавить кластер на главной странице. Введите, как показано ниже (обратите внимание на выбор метода подключения агента)

WeiyiGeek.k8s cluster add

Step 2. Пожалуйста, установите kuboard-agent Потом в Волю импортироваться Kubernetes кластер Выполните следующую команду

Язык кода:javascript
копировать
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:~$
 
# существовать Импортированный Кубернетес выполнение кластера, чтобы увидеть вас
$ 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.кластердобавить в

Step 4. Если вы выполнили команду импорта, но все еще ожидаете импорта, возможно, это связано с тем, что kuboard-agent Не запущено, или kuboard-agent Не могу подключиться куборд-сервер. Следуйте приведенным ниже советам, чтобы проверить сетевое подключение и kuboard-agent бревно.

Язык кода:javascript
копировать
# 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)"

Шаг 5. После завершения подключения иv2.

WeiyiGeek.кластеруправлять

Step 5. Изучите сгенерированное выше Kuboard-agent.yaml Подготовка списка ресурсов

Язык кода:javascript
копировать
# Создание пространства имен
---
apiVersion: v1
kind: Namespace
metadata:
  name: kuboard

# Создание пользователя сервиса
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: kuboard-admin
  namespace: kuboard

# Привязка ролей кластера Роль члена RBAC-Воляк8sкластеруправлять привязана к 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 контейнер (этот использует два Deploymentcontroller приходит进行不同Разрешения分离)
---
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
      # Узел Toleratemaster существует также работает
      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进行многокластеруправлять

Язык кода:javascript
копировать
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 кластерсписок

2. Использование управления кластером

Step 1.выбиратьk8s-test.weiyigeekкластер->defaultпространство имен->Общие операции->отYAMLсередина创建。

Step 2. Создайте приложение-службу Nginx в Kuboiard. от YAML Список ресурсов, созданный вводом Воляэтота: (注意для了便于управлятьпредположениеконтроллеримяи服务发现имя设置一样)

Язык кода:javascript
копировать
# Настройки словаря
---
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

  • Step 3.развертыватьрезультатдоступhttp://192.168.12.111:30000/Интерфейс возврата адреса выглядит следующим образом:

WeiyiGeek.Результаты развертывания

  • Шаг 4. Просмотрите ConfigMap, созданный нашим списком ресурсов.,Нажмите Конфигурациясередина心->Конфигурациясловарь->я们可以проходитьсписок ресурсов иUIсоздать

WeiyiGeek.kuboard-ConfigMap

boy illustration
Как настроить размер экрана в PR. Учебное пособие по настройке размера видео в PR [подробное объяснение]
boy illustration
Элегантный и мощный: упростите операции ElasticSearch с помощью easy-es
boy illustration
Проект аутентификации по микросервисному токену: концепция и практика
boy illustration
【Java】Решено: org.springframework.http.converter.HttpMessageNotWritableException.
boy illustration
Изучите Kimi Smart Assistant: как использовать сверхдлинный текст, чтобы открыть новую сферу эффективной обработки информации
boy illustration
Начало работы с Docker: использование томов данных и монтирования файлов для хранения и совместного использования данных
boy illustration
Использование Python для реализации автоматической публикации статей в публичном аккаунте WeChat
boy illustration
Разберитесь в механизме и принципах взаимодействия потребителя и брокера Kafka в одной статье.
boy illustration
Spring Boot — использование Resilience4j-Circuitbreaker для реализации режима автоматического выключателя_предотвращения каскадных сбоев
boy illustration
13. Springboot интегрирует Protobuf
boy illustration
Примечание. Инструмент управления батареями Dell Dell Power Manager
boy illustration
Общая интерпретация класса LocalDate [java]
boy illustration
[Базовые знания ASP.NET Core] -- Веб-API -- Создание и настройка веб-API (1)
boy illustration
Настоящий бой! Подключите Passkey к своему веб-сайту для безопасного входа в систему без пароля.
boy illustration
Руководство по настройке Nginx: как найти, интерпретировать и оптимизировать настройки Nginx в Linux
boy illustration
Typecho отображает использование памяти сервера
boy illustration
Как вставить элемент перед указанным ключом в ассоциативный массив в PHP
boy illustration
swagger2 экспортирует API как текстовый документ (реализация Java) [легко понять]
boy illustration
Выбор фреймворка nodejs Express koa egg MidwayJS сравнение NestJS
boy illustration
Руководство по загрузке, установке и использованию SVN «Рекомендуемая коллекция»
boy illustration
Интерфейс PHPforwarding_php отправляет запрос на получение
boy illustration
Создавайте и защищайте связь в реальном времени с помощью SignalR и Azure Active Directory.
boy illustration
ВичатПубличная платформаразвивать(три)——ВичатQR-кодгенерировать&Сканировать кодсосредоточиться на
boy illustration
[Углубленное понимание Java IO] Используйте InputStreamReader для чтения содержимого файла и легкого выполнения задач преобразования текста.
boy illustration
сравнение строк PHP
boy illustration
9 сценариев асинхронного сбоя @Async
boy illustration
Эффективная обработка запланированных задач: углубленное изучение секретов библиотеки APScheduler на Python
boy illustration
Рекомендации по облегченному артефакту развязки внутренних компонентов Spring Event (событие Spring)
boy illustration
Go: Лесоруб-лесоруб на колесах Введение
boy illustration
Основы серверной разработки: технология кэширования, которую должен освоить каждый программист