[TOC]
описывать: Kuboard это бесплатно Kubernetes управлятьинструмент,Обеспечивает богатый функционал,Объедините существующие илиНовое хранилище кода、Зеркальный склад、Инструменты CI/CD
ждать,Вы можете легко создать готовую к использованию Kubernetes Контейнерная облачная платформа упрощает управление и запуск облачных приложений.
Вы также можете установить Kuboard непосредственно в существующий кластер Kubernetes и открыть возможности, предоставляемые Kubernetes, вашей команде разработки/тестирования через интерфейс управления Kubernetes RBAC, предоставляемый Kuboard.
Функции, предоставляемые Kuboard:
описывать: Kuboard v3.x Совместимость предполагает Kubernetes Версия (v1.13 ~ v1.20)
Возможности Kuboard v3.x:
Сравнение Kuboard v3.x и v2.0.x:
Советы: Если вы наконец решите перейти с Kuboard v2.0.x на Kuboard v3, удалите пакет Kuboard в интерфейсе Kuboard v2.0.x и переустановите пакет Kuboard в Kuboard v3.
1) Инструкции по развертыванию кластера k8s. Получите файлы YAML, необходимые для развертывания Kuboard:
curl -o kuboard-v3.yaml https://addons.kuboard.cn/kuboard/kuboard-v3.yaml
2. Отредактируйте конфигурацию в файле kuboard-v3.yaml. В этом файле развертывания необходимо изменить две конфигурации:
# Объяснение следующих параметров можно найти в документации. 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.
kubectl create -f kuboard-v3.yaml
Tips : этот YAML файл в Kubernetes Внедрена трёхкопийная система. StatefulSet kuboard-etcd
и единственный экземпляр Deployment kuboard-v3 среди них; Deployment kuboard-v3 Несколько копий на данный момент не поддерживаются, сохраните их. replicas Поля 1. Воля будет решена при последующем обновлении версии. kuboard-v3 Проблемы с развертыванием нескольких копий.
1) доступ Kuboard Открыть ссылку в браузере http://192.168.12.108:30567 , введите исходное имя пользователя и пароль для входа в систему
имя пользователя: admin
пароль: Kuboard123
Управление несколькими кластерами WeiyiGeek.Kuboard
2) для Единый входпользователей/Авторизация группы пользователей(потому чтосуществовать Он находится только на стадии разработки, поэтому еще немного незрелый.
)
описывать: Когда вы настраиваете Kuboard и gitlab / github / ldap
После внедрения единого входа Kuboard Он не включает базовую информацию о пользователях, информацию о группах пользователей и информацию о сопоставлении между пользователями и группами пользователей.
Чтобы пользователи единого входа имели соответствующие разрешения, вам необходимо Kuboard Авторизуйте соответствующего пользователя/группу пользователей в:
- Добавить привязки ролей для пользователей
- переключиться на Привязка роли (глобальная)
- Создать риг персонажа
WeiyiGeek.Авторизация
Tips : Глобальная привязка ролей, пользователи могут находиться во всех Kubernetes Выполнять разрешения, предоставленные этой ролью, на уровне всего кластера;
Tips : Привязка роли кластера, пользователи могут работать только в указанной Kubernetes Выполнять разрешения, предоставленные этой ролью, на уровне всего кластера;
Tips : Обычно сАвторизация группы пользователей
比дляАвторизация одного пользователя более гибкая и удобная.
。
; использовать 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 один из них)
# Уже есть Сертификат - 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 час,Вы, Воля, сможете получить доступ,Сертификат также выдается автоматически. Конфигурация хорошая; обычно бесплатный Сертификат действителен в течение одного года.,За месяц до истечения срока действия Сертификата,Система автоматически обновит для вас Сертификат.,Никаких дополнительных действий с вашей стороны не требуется.
описывать: Воля kuboard v3 Обновите до последней версии。
Способ 1. Докер контейнер
# 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. Кубернетес кластер
# Обновите до последней версии
kubectl set image -n kuboard deployment/kuboard-v3 kuboard=swr.cn-east-2.myhuaweicloud.com/kuboard/kuboard:v3
Step 1.Добавить существующий Kubernetes кластер到 Kuboard(Обратите внимание, что кластер Kubernetes, версия не ниже v1.13.
),Нажмите Добавить кластер на главной странице. Введите, как показано ниже (обратите внимание на выбор метода подключения агента)
WeiyiGeek.k8s cluster add
Step 2. Пожалуйста, установите kuboard-agent Потом в Волю импортироваться Kubernetes кластер Выполните следующую команду
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 бревно.
# 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
Подготовка списка ресурсов
# Создание пространства имен
---
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进行многокластеруправлять
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 кластерсписок
Step 1.выбиратьk8s-test.weiyigeek
кластер->defaultпространство имен->Общие операции->отYAMLсередина创建。
Step 2. Создайте приложение-службу Nginx в Kuboiard.
от YAML Список ресурсов, созданный вводом Воляэтота: (注意для了便于управлятьпредположениеконтроллеримяи服务发现имя设置一样
)
# Настройки словаря
---
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
http://192.168.12.111:30000/
Интерфейс возврата адреса выглядит следующим образом:WeiyiGeek.Результаты развертывания
WeiyiGeek.kuboard-ConfigMap