BlueXIII's Blog

热爱技术,持续学习

0%

官网

参考

emqx安装

1
2
3
4
5
6
7
8
9
10
11
12
# Docker安装
docker pull emqx/emqx:5.2.0
docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.2.0

# Ubuntu
curl -s https://assets.emqx.com/scripts/install-emqx-deb.sh | sudo bash
sudo apt-get install emqx
sudo systemctl start emqx

# UI
http://localhost:18083/

mqttx客户端

GUI

https://mqttx.app/

CLI

1
2
3
4
5
6
7
# CLI安装
brew install emqx/mqttx/mqttx-cli
# 订阅
mqttx sub -t 'testtopic/#' -q 1 -h 'localhost' -p 1883 'public' -v
# 发布
mqttx pub -t 'testtopic/1' -q 1 -h 'localhost' -p 1883 -m 'from MQTTX CLI'

QOS

  • QoS 0:最多传递一次消息,可能会丢失;
  • QoS 1:至少传递一次消息并保证到达,但可能会重复;
  • QoS 2:仅传递一次消息并保证无重复到达。

Make

1
2
3
4
git clone https://github.com/emqx/emqx.git
cd emqx
make
_build/emqx/rel/emqx/bin/emqx console

MQTT中间件

开源平台

云平台

其它商业化平台

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
资方背景 平台分类 本部城市
华为智慧家庭 Openlife 泛 ICT 系 系统平台|软硬件全连接平台 深圳
谷歌 Brillo 泛 ICT 系 系统平台 美国
高通 AllJoyn 泛 ICT 系 系统平台|软硬件平台 美国
ARM 基金会 mbed 泛 ICT 系 系统平台|软硬件平台 英国
微软 Windows 10 for IoT 泛 ICT 系 系统平台 美国
三星 SmartThings 泛 ICT 系 软硬件平台 美国
苹果 Home 泛 ICT 系 系统平台 美国

科大讯飞 AIUI 方案商系 语音交互软硬件平台 合肥
云知声 hivoice 方案商系 语音交互软硬件平台 北京
思必驰 AIOS 方案商系 语音交互软硬件平台 苏州
庆科 MiCO 方案商系 系统平台|连接软硬件平台 上海
和而泰 C-Life 方案商系 连接软硬件平台 深圳
硬蛋 Link 方案商系 硬件模块供应链平台 深圳
博联 DNA system 方案商系 连接软硬件平台 杭州
涂鸦 Tuya 方案商系 连接软硬件平台 杭州
酷宅科技 coolkit 方案商系 连接软硬件平台 深圳
氦氪 Hekr 方案商系 连接软硬件平台 杭州
乐鑫 IOT 方案商系 连接软硬件平台 上海
爱悠 everyoo 方案商系 连接软硬件平台 青岛
亿联客 yeelink 方案商系 连接软硬件平台 青岛

机智云 云计算系 云计算|连接软硬件平台 广州
云智易 云计算系 云计算|连接软硬件平台 广州
深智云 DT Kit 云计算系 云计算|连接软硬件平台 深圳
智云奇点 AbleCloud 云计算系 云计算|连接软硬件平台 北京
方研矩行科技青莲云 云计算系 云计算|连接软硬件不详 北京
乐为物联 LEWEI50 云计算系 云计算|连接软硬件不详 北京
艾拉物联 AylaAgile IoT 云计算系 云计算|连接软硬件平台 美国

京东智能云 JD Smart 互联网系 云计算|连接软硬件平台 北京
阿里智能云 Smart Living 互联网系 云计算|连接软硬件平台 杭州
腾讯 QQ 物联 互联网系 云计算|连接软硬件平台 深圳
腾讯智能开放平台 互联网系 云计算|连接软硬件平台 深圳
百度天工智能物联平台 互联网系 云计算|连接软硬件平台 北京
小米开放平台 互联网系 云计算|连接软硬件平台 北京
360 智能云开发者平台 互联网系 云计算|连接软硬件平台 北京

大华乐橙 LeChange 设备商系 连接软硬件平台 杭州
海尔 U+ 设备商系 连接软硬件平台 青岛
美的 M-Smart 设备商系 连接软硬件平台 佛山
博西 Home Connect 设备商系 连接软硬件平台 德国

参考

helm方式安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 安装
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install prometheus prometheus-community/prometheus --namespace prometheus --create-namespace

# UI
http://prometheus-server.prometheus:80 # DNS
http://10.193.36.41:30022 # NodePort


prometheus-prometheus-node-exporter.prometheus
node-exporter.kubesphere-monitoring-system
prometheus-k8s.kubesphere-monitoring-system

# 打开prometheus
kubectl port-forward --namespace kubesphere-monitoring-system service/prometheus-k8s 9090:9090
open http://localhost:9090

pom.xml配置

1
2
3
4
5
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>1.3.6</version>
</dependency>

Nacos配置

1
2
3
4
5
management:
endpoints:
web:
exposure:
include: 'health,prometheus'

临时测试

1
2
3
4
5
6
7
8
9
10
11
12
# 本机测试
cd /Users/bluexiii/Documents/code/devops/dubhe-app/dubhe-metadata/dubhe-metadata-biz/target
export NACOS_HOST=10.193.36.41
export NACOS_PORT=30101
export NACOS_USERNAME=nacos
export NACOS_PASSWORD=nacos
java -jar dubhe-metadata-biz.jar
open http://localhost:8600/actuator/prometheus

# K8S测试 dubhe-metadata.dubhe-dev
kubectl port-forward --namespace dubhe-dev service/dubhe-metadata 8600:8600
open http://localhost:8600/actuator/prometheus

prometheus配置

1
2
3
4
5
6
7
8
9
10
- job_name: "应用详细指标"
metrics_path: "/actuator/prometheus"
static_configs:
- targets:
[
"dubhe-metadata.dubhe-dev:8600",
"dubhe-quality.dubhe-dev:8604"
]
labels:
application: "开发环境"

Grafana 配置

复用Loki的Grafana:
http://10.193.36.41:30016

参考

安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 导入环境变量
export SKYWALKING_RELEASE_VERSION=4.5.0
export SKYWALKING_RELEASE_NAME=skywalking
export SKYWALKING_RELEASE_NAMESPACE=skywalking

# 安装
helm install "${SKYWALKING_RELEASE_NAME}" \
oci://registry-1.docker.io/apache/skywalking-helm \
--version "${SKYWALKING_RELEASE_VERSION}" \
-n "${SKYWALKING_RELEASE_NAMESPACE}" \
--set oap.image.tag=9.2.0 \
--set oap.storageType=elasticsearch \
--set ui.image.tag=9.2.0

# UI NodePort
http://10.193.36.41:30017

# OAP
skywalking-skywalking-helm-oap.skywalking:11800
10.193.36.41:30018

应用改造

Dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
FROM harbor.dubhe:30002/dubhe-base/amazoncorretto:8u372

MAINTAINER dubhe

ENV TZ=Asia/Shanghai

RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && \
echo $TZ > /etc/timezone && \
mkdir -p /app

WORKDIR /app

EXPOSE 8600

ADD ./dubhe-metadata/dubhe-metadata-biz/target/dubhe-metadata-biz.jar ./

ADD ./deploy/apache-skywalking-java-agent-8.16.0.tgz /

CMD java -Xms2048m -Xmx2048m -javaagent:/skywalking-agent/skywalking-agent.jar -jar dubhe-metadata-biz.jar

HelmChart

1
2
3
4
5
env:
- name: SW_AGENT_NAME
value: dubhe-metadata
- name: SW_AGENT_COLLECTOR_BACKEND_SERVICES
value: skywalking-skywalking-helm-oap.skywalking:11800

忽略部分路径

  1. 拷贝skywalking-agent/optional-plugins目录中的apm-trace-ignore-plugin-8.13.0.jar到pulgins
  2. 在config目录中新建apm-trace-ignore-plugin.config文件存放忽略端点配置

apm-trace-ignore-plugin.config:

1
trace.ignore_path=${SW_AGENT_TRACE_IGNORE_PATH:GET:/actuator,GET:/actuator/**,/actuator/**,/eureka/**,Druid/**,Mysql/**,Lettuce/**,Gson/**}

日志改造

pom.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>7.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<version>8.16.0</version>
</dependency>
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>8.16.0</version>
</dependency>

logback-springboot.xml

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
<!-- SkyWalking转换器-->
<conversionRule conversionWord="tid" converterClass="org.apache.skywalking.apm.toolkit.log.logback.v1.x.LogbackPatternConverter"/>
<conversionRule conversionWord="sw_ctx" converterClass="org.apache.skywalking.apm.toolkit.log.logback.v1.x.LogbackSkyWalkingContextPatternConverter"/>

<!-- SkyWalkingGRPC输出 -->
<appender name="grpc-log" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n</Pattern>
</layout>
</encoder>
</appender>

<!-- STDOUT输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp>
<timeZone>UTC</timeZone>
</timestamp>
<pattern>
<pattern>
{
"level": "%level",
"tid": "%tid",
"skyWalkingContext": "%sw_ctx",
"thread": "%thread",
"class": "%logger{1.}:%L",
"message": "%message",
"stackTrace": "%exception{10}"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>

本机临时测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cd /Users/bluexiii/Documents/code/devops/dubhe-app/dubhe-metadata/dubhe-metadata-biz/target
export NACOS_HOST=10.193.36.41
export NACOS_PORT=30101
export NACOS_USERNAME=nacos
export NACOS_PASSWORD=nacos
export SW_AGENT_NAME=dubhe-metadata
export SW_AGENT_COLLECTOR_BACKEND_SERVICES=10.193.36.41:30018
export SW_AGENT_TRACE_IGNORE_PATH="GET:/actuator/**,Lettuce/**,Druid/**"
java -javaagent:/Users/bluexiii/opt/skywalking-agent/skywalking-agent.jar -jar dubhe-metadata-biz.jar

CMD java -Xms2048m -Xmx2048m \
-Dskywalking.trace.ignore_path=\*/actuator/health,\*/actuator \
-javaagent:/Users/bluexiii/opt/skywalking-agent/skywalking-agent.jar \
-jar dubhe-metadata-biz.jar

参考

官网

入门教程

动态标签

日志改造

配置

安装

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
# 添加chart库
helm repo add grafana https://grafana.github.io/helm-charts

# 单体模式部署
helm upgrade --install loki \
--namespace=loki-stack grafana/loki-stack --create-namespace \
--set grafana.enabled=true \
--set grafana.image.tag="9.3.2"

# 单体模式+指定PVC
vi pvc-values.yaml
loki:
persistence:
enabled: true
size: 500Gi

helm upgrade --install loki --namespace=loki-stack grafana/loki-stack --create-namespace \
--set grafana.enabled=true \
--set grafana.image.tag="9.3.2" \
-f pvc-values.yaml

# 查看Grafana密码
kubectl get secret --namespace loki-stack loki-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
blwUDUjqhl997xofek3dp06w8Xmc4ZhvwucQnMXw

# 打开Grafana
kubectl port-forward --namespace loki-stack service/loki-grafana 3000:80
open http://localhost:3000
open http://10.193.36.41:30016 # nodeport

# 部署示例应用
kubectl apply -f https://ghproxy.com/https://raw.githubusercontent.com/lyzhang1999/kubernetes-example/main/loki/deployment.yaml
kubectl logs -l app=log-example

Query

Grafana 9.X支持图形化查询,TIDB自带的Grafana版本为7.5.11

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Label查询
{app="log-example"} |= ``
# 使用logfmt解析器
{app="log-example"} | logfmt | status = `200`
# 使用JSON解析器
{app="log-example"} | json | status = `200`
# 查询状态码不等于200的日志
{app="log-example"} |= `status=` | logfmt | status != `200`
# 查询状态码在400和500区间的日志
{app="log-example"} |= `status=` | logfmt | status >= 400 | status <= 500
# 查询接口返回时间超过3us的日志
{app="log-example"} |= `status=` | logfmt | duration > 3us
# 重新格式化输出日志
{app="log-example"} |= `status=` | logfmt | line_format `{{ .duration }} {{ .uri }}`
# 分组统计 10s 内 Pod 的日志数量
sum by (pod) (count_over_time({app="log-example"} |= `status=` | logfmt | duration > 4us [10s]))
# 分组统计 1 分钟内的请求状态码数量
sum by (status) (
count_over_time({app="log-example"} |= `status=` | logfmt | __error__=""[1m])
)

{app="dubhe-metadata"} | json | level = `INFO`

JSON日志改造

pom.xml

1
2
3
4
5
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>7.0.1</version>
</dependency>

logback-spring.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<pattern>
<pattern>
{
"timestamp": "%date{\"yyyy-MM-dd HH:mm:ss.SSS\"}",
"level": "%level",
"pid": "${PID:-}",
"thread": "%thread",
"class": "%logger",
"method": "%method",
"line": "%line",
"message": "%message"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>

镜像

https://hub.docker.com/r/sonatype/nexus3

安装

1
2
3
4
5
6
7
8
9
10
11
# 启动
mkdir -p /dubhe/nexus-data && chown -R 200 /dubhe/nexus-data
docker run -d -p 8081:8081 --name nexus -v /dubhe/nexus-data:/nexus-data sonatype/nexus3
docker run -d --network host --name nexus -v /dubhe/nexus-data:/nexus-data sonatype/nexus3

# 停止
docker stop --time=120 nexus

# 登录
http://10.193.36.33:8081/
admin/yourpass

pom.xml

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
		<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.6.0</version>
<scope>system</scope>
<systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>
<dependency>
<groupId>com.sun</groupId>
<artifactId>jconsole</artifactId>
<version>1.6.0</version>
<scope>system</scope>
<systemPath>${java.home}/../lib/jconsole.jar</systemPath>
</dependency>

<distributionManagement>
<repository>
<id>releases</id>
<name>Internal Releases</name>
<url>http://10.193.36.33:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>releases</id>
<name>Internal Releases</name>
<url>http://10.193.36.33:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>

settings.xml

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
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<pluginGroups>
</pluginGroups>
<proxies>
</proxies>
<servers>
<server>
<id>releases</id>
<username>admin</username>
<password>yourpass</password>
</server>
</servers>
<mirrors>
<!-- <mirror>
<id>nexus-aliyun</id>
<mirrorOf>*,!jitpack.io,!elasticsearch-releases,!dtstack-github,!nexus-public,!elastic.co</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror> -->
<mirror>
<id>aliyun-central</id>
<mirrorOf>central</mirrorOf>
<name>aliyun-central</name>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>
<mirror>
<id>aliyun-jcenter</id>
<mirrorOf>jcenter,public</mirrorOf>
<name>aliyun-jcenter</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
<mirror>
<id>aliyun-google</id>
<mirrorOf>google</mirrorOf>
<name>aliyun-google</name>
<url>https://maven.aliyun.com/repository/google</url>
</mirror>
<mirror>
<id>aliyun-spring</id>
<mirrorOf>spring</mirrorOf>
<name>aliyun-spring</name>
<url>https://maven.aliyun.com/repository/spring</url>
</mirror>
<mirror>
<id>aliyun-spring-plugin</id>
<mirrorOf>spring-plugin</mirrorOf>
<name>aliyun-spring-plugin</name>
<url>https://maven.aliyun.com/repository/spring-plugin</url>
</mirror>
</mirrors>
</settings>

build

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mvn  -Dmaven.test.skip=true clean install

mvn clean package -U -pl efpx-register
mvn clean package -U -pl efpx-gateway
mvn clean package -U -pl efpx-auth
mvn clean package -U -pl efpx-upms/efpx-upms-biz
mvn clean package -U -pl dubhe-metadata/dubhe-metadata-biz
mvn clean package -U -pl dubhe-scheduler/dubhe-scheduler-biz
mvn clean package -U -pl dubhe-data-integration
mvn clean package -U -pl dubhe-alert/dubhe-alert-biz
mvn clean package -U -pl dubhe-api-generation
mvn clean package -U -pl dubhe-quality/dubhe-quality-biz
mvn clean package -U -pl dubhe-encryption/dubhe-encryption-biz
mvn clean package -U -pl dubhe-executor/dubhe-executor-biz
mvn clean package -U -pl efpx-visual/efpx-monitor

配置参数

1
2
3
4
5
6
7
8
# 镜像名
harbor.dubhe:30002/dubhe-base/amazoncorretto:8u372

# 启动命令
mvn install && mvn spring-boot:run -pl ./dubhe-alert/dubhe-alert-biz
mvn clean package -U -pl dubhe-executor/dubhe-executor-biz

mvn spring-boot:run -pl dubhe-executor-biz

本机调试

1
2
3
4
export NACOS_HOST=10.193.36.41
export NACOS_PORT=30101
export NACOS_USERNAME=nacos
export NACOS_PASSWORD=nacos

docker-manifest用法

1
2
3
4
5
docker manifest create --insecure harbor.dubhe:30002/dubhe-base/nginx:1.25.1 \
harbor.dubhe:30002/dubhe-base/nginx:1.25.1-arm \
harbor.dubhe:30002/dubhe-base/nginx:1.25.1-x86

docker manifest push --insecure harbor.dubhe:30002/dubhe-base/nginx:1.25.1

manifest-tool用法

基础镜像制作脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
IMAGE=amazoncorretto:8u372

docker pull --platform linux/arm64 ${IMAGE}
docker tag ${IMAGE} harbor.dubhe:30002/dubhe-base/${IMAGE}-arm64
docker push harbor.dubhe:30002/dubhe-base/${IMAGE}-arm64

docker pull --platform linux/amd64 ${IMAGE}
docker tag ${IMAGE} harbor.dubhe:30002/dubhe-base/${IMAGE}-amd64
docker push harbor.dubhe:30002/dubhe-base/${IMAGE}-amd64

manifest-tool --plain-http --username=admin --password=yourpass push from-args \
--platforms linux/amd64,linux/arm64 \
--template harbor.dubhe:30002/dubhe-base/${IMAGE}-ARCH \
--target harbor.dubhe:30002/dubhe-base/${IMAGE}

基础镜像清单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# oracle-jdk8(X86 Only)
harbor.dubhe:30002/dubhe-base/java:8u111

# dragonwell自制(ARM Only)
harbor.dubhe:30002/dubhe-base/dragonwell:8.15.16-arm

# openjdk8(双架构)
harbor.dubhe:30002/dubhe-base/openjdk:8-jre-slim-buster

# correttojdk8(双架构)
harbor.dubhe:30002/dubhe-base/amazoncorretto:8u372

# 官方镜像
harbor.dubhe:30002/dubhe-base/busybox:1.36.0
harbor.dubhe:30002/dubhe-base/nginx:1.25.1

# 自制镜像
harbor.dubhe:30002/dubhe-base/alpine:3.16.3
harbor.dubhe:30002/dubhe-base/ubuntu:22.04

# 自制镜像(TektonTask X86 Only)
harbor.dubhe:30002/dubhe-base/chart-update:latest
harbor.dubhe:30002/dubhe-base/dubhe-buildkit:1.2.0

官网

https://argo-cd.readthedocs.io/en/stable/getting_started/

镜像清单

1
2
3
quay.io/argoproj/argocd:v2.7.6
ghcr.io/dexidp/dex:v2.36.0
redis:7.0.11-alpine

部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 安装
wget https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
kubectl create namespace argocd
kubectl apply -n argocd -f install.yaml

# 安装cli
brew install argocd

# cli方式获取实始密码
argocd admin initial-password -n argocd
admin/yourpass

# kubectl方式获取初始密码(可选)
kubectl get secret -n argocd argocd-initial-admin-secret -o yaml
echo yourpassbase64== | base64 -d

# WEB方式登录
https://10.193.36.51:30010

http://10.193.36.252:30010

禁用https跳转

修改configmap的方式实测无效,转而通过修改devops-argocd-server的pod启动参数实现

1
2
3
4
5
command:
- argocd-server
- '--staticassets'
- /shared/app
- '--insecure'

启用webhook

地址: http://10.193.36.41:30010/api/webhook
设置密码:

1
2
3
4
5
kubectl edit secret argocd-secret -n argocd

# 明文填写
stringData:
webhook.gogs.secret: dubhe123

配置开发、测试环境

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# CLI方式登录
argocd login 10.193.36.41:30010 # admin/yourpass

# Git仓库监权
argocd repo add http://10.193.36.33:3000/dubhe/dubhe-charts --username dubhe --password yourpass

# 创建开发应用,自动同步
argocd app create dubhe-app-dev \
--sync-policy automated \
--repo http://10.193.36.33:3000/dubhe/dubhe-charts \
--revision develop \
--path dubhe-app \
--dest-namespace dubhe-dev \
--dest-server https://kubernetes.default.svc

# 创建测试应用,手动同步
argocd app create dubhe-app-test \
--sync-policy none \
--repo http://10.193.36.33:3000/dubhe/dubhe-charts \
--revision test \
--path dubhe-app \
--dest-namespace dubhe-test \
--dest-server https://kubernetes.default.svc

配置仿真环境

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# CLI方式登录
argocd login 10.193.36.51:30010 # admin/yourpass

# Git仓库监权
argocd repo add http://10.193.36.50:3000/dubhe/dubhe-charts --username dubhe --password yourpass

# 创建仿真应用,手动同步
argocd app create dubhe-app \
--sync-policy none \
--repo http://10.193.36.50:3000/dubhe/dubhe-charts \
--revision master \
--path dubhe-app \
--dest-namespace dubhe \
--dest-server https://kubernetes.default.svc

整体说明

  • harbor早期通过整合第三方的chartmuseum,实现了对helm-chart仓库的支持
  • chartmuseum归属于helm公司,有独立官网和github仓库
  • harbor有多种安装方式,例如: 二进制脚本安装、DockerCompose安装、Helm方式在K8S安装(通过一个名为harbor-helm项目)
  • harbor的二进制脚本安装,在3个月前已经移除对chartmuseum的支持
  • harbor的Helm安装方式(harbor-helm),最新仓库中已经没有了chartmuseum的选项,从提交历史上看1.11.0是最后一个包含museum的版本
  • 官方在2023年4月24日的一个Issue中,解释了抛弃chartmusem的原因,以及整个提案的过程
  • 2022年8月,V2.6.0发版说明中提到了已经准备移除Chartmuseum,提到了V2.8.0(2023年4月)将会彻底完成移除
  • harbor未来会通过OCI规范,直接支持chart仓库

chartmuseum官网

harbor中关于chartmuseum的一些线索

harbor版本发布时间梳理

  • v2.8.0 2023/04
  • v2.7.0 2022/12
  • v2.6.0 2022/08

chartmuseum docker方式试用

1
2
3
4
5
6
7
docker run --rm -it \
-p 8080:8080 \
-e DEBUG=1 \
-e STORAGE=local \
-e STORAGE_LOCAL_ROOTDIR=/charts \
-v $(pwd)/charts:/charts \
ghcr.io/helm/chartmuseum:v0.14.0

只提供API,没有UI,类似docker-registry