Skip to content

Commit 7cb0451

Browse files
ci: update file from GitHub Action [skip ci]
1 parent f906036 commit 7cb0451

4 files changed

Lines changed: 504 additions & 0 deletions

File tree

docs/en/solutions/How_to_Use_Konveyor.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ products:
55
- Alauda Application Services
66
ProductsVersion:
77
- 4.x
8+
id: KB260100023
89
---
910

1011
# How to Deploy and Use Konveyor

docs/en/solutions/ecosystem/opensearch/How_to_update_opensearch_admin_password.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ products:
33
- Alauda Application Services
44
kind:
55
- Solution
6+
id: KB260100022
67
---
78

89
# How to Set and Update the OpenSearch Admin Password
Lines changed: 268 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,268 @@
1+
---
2+
kind:
3+
- Solution
4+
products:
5+
- Alauda Application Services
6+
ProductsVersion:
7+
- 4.x
8+
id: KB260100023
9+
sourceSHA: 986b9b0d5648d8648b27487418da8454b121df6b232f4ad72ca51ad0e34d344b
10+
---
11+
12+
# 如何部署和使用 Konveyor
13+
14+
## 概述
15+
16+
Konveyor 是一个 CNCF(云原生计算基金会)项目,提供了一个模块化的平台用于应用现代化。它支持现代化的整个生命周期:发现、评估、分析和执行。本指南涵盖了部署 Konveyor Hub(Tackle)平台及其核心组件。
17+
18+
## 先决条件
19+
20+
- 具有 kubectl 访问权限的 Kubernetes 集群
21+
- 支持 ReadWriteMany (RWX) 访问模式的 StorageClass
22+
- 用于 RWO 卷(数据库)的 StorageClass
23+
- (可选)用于外部访问的 LoadBalancer 或 Ingress Controller
24+
25+
## 安装 Konveyor Operator
26+
27+
[Alauda Cloud Console](https://cloud.alauda.io/) Marketplace 下载 Konveyor Operator 插件,并按照 [上架软件包](https://docs.alauda.io/container_platform/4.2/extend/upload_package.html) 指南将插件上传到集群。
28+
29+
## 部署 Konveyor Hub (Tackle)
30+
31+
### 创建 Tackle 实例
32+
33+
通过创建 Tackle CR 部署 Tackle 平台。Tackle 实例必须在与 konveyor-operator 相同的命名空间中部署。
34+
35+
```yaml
36+
cat << EOF | kubectl create -f -
37+
apiVersion: tackle.konveyor.io/v1alpha1
38+
kind: Tackle
39+
metadata:
40+
name: tackle
41+
namespace: konveyor-tackle
42+
spec:
43+
feature_auth_required: true
44+
feature_isolate_namespace: true
45+
feature_analysis_archiver: true
46+
hub_database_volume_size: 5Gi
47+
hub_bucket_volume_size: 100Gi
48+
rwx_supported: true
49+
hub_bucket_storage_class: nfs # 替换为您的 RWX StorageClass
50+
rwo_storage_class: sc-topolvm # 替换为您的 RWO StorageClass
51+
cache_storage_class: nfs
52+
cache_data_volume_size: 100Gi
53+
EOF
54+
```
55+
56+
### 验证部署
57+
58+
检查 `konveyor-tackle` 命名空间中的 pod 状态:
59+
60+
```bash
61+
kubectl get pods -n konveyor-tackle
62+
```
63+
64+
确保所有 pod 都处于 `Running``Completed` 状态,然后再继续。
65+
66+
> \[!WARNING]
67+
> Tackle 实例必须在与 `konveyor-operator` 相同的命名空间中部署。如果您在不同的命名空间中部署,操作员创建的一些资源(如 PersistentVolumeClaims、ConfigMaps、Secrets 和 ServiceAccounts)在删除 Tackle 自定义资源时可能不会自动删除。在这种情况下,您必须手动清理受影响命名空间中的这些资源,例如:
68+
>
69+
> ```bash
70+
> # 删除标记为 Tackle 实例的公共资源
71+
> kubectl delete pvc,configmap,secret,sa -l app.kubernetes.io/instance=tackle -n konveyor-tackle
72+
> ```
73+
74+
### 配置选项
75+
76+
| 名称 | 默认值 | 描述 |
77+
| ----------------------------------------- | ------- | ------------------------------------------------------------- |
78+
| `spec.feature_auth_required` | `true` | 启用 Keycloak 身份验证(设置为 `false` 以实现单用户/无身份验证) |
79+
| `spec.feature_isolate_namespace` | `true` | 通过网络策略启用命名空间隔离 |
80+
| `spec.feature_analysis_archiver` | `true` | 在创建新分析报告时自动归档旧的分析报告 |
81+
| `spec.rwx_supported` | `true` | 集群是否支持 RWX 卷 |
82+
| `spec.hub_database_volume_size` | `5Gi` | 请求的 Hub 数据库卷大小 |
83+
| `spec.hub_bucket_volume_size` | `100Gi` | 请求的 Hub 存储桶卷大小 |
84+
| `spec.keycloak_database_data_volume_size` | `1Gi` | 请求的 Keycloak 数据库卷大小 |
85+
| `spec.cache_data_volume_size` | `100Gi` | 请求的 Tackle 缓存卷大小 |
86+
| `spec.cache_storage_class` | N/A | 请求的 Tackle 缓存卷的 StorageClass |
87+
| `spec.hub_bucket_storage_class` | N/A | 请求的 Tackle Hub 存储桶卷的 StorageClass(RWX) |
88+
| `spec.rwo_storage_class` | N/A | 请求的 RWO 数据库卷的 StorageClass |
89+
90+
## 访问 Tackle UI
91+
92+
### 通过端口转发快速访问
93+
94+
1. 设置端口转发:
95+
96+
```bash
97+
kubectl -n konveyor-tackle port-forward service/tackle-ui 8080:8080
98+
```
99+
100+
2. 在浏览器中打开 <http://127.0.0.1:8080>
101+
102+
### 初始化管理员账户
103+
104+
内置的 Keycloak 在启动时生成一个随机密码。这是 Keycloak 的根密码,存储在 `tackle-keycloak-sso` secret 中。
105+
106+
1. 检索 Keycloak 管理员凭据:
107+
108+
```bash
109+
# 获取用户名(默认:admin)
110+
kubectl -n konveyor-tackle get secret tackle-keycloak-sso -o jsonpath='{.data.username}' | base64 -d
111+
112+
# 获取密码
113+
kubectl -n konveyor-tackle get secret tackle-keycloak-sso -o jsonpath='{.data.password}' | base64 -d
114+
```
115+
116+
2. 登录到 Keycloak 管理控制台 <http://127.0.0.1:8080/auth/admin/>
117+
118+
3. 重置 Tackle 管理员密码:
119+
- 从下拉菜单中选择 **tackle** Realm(而不是 Master Realm)
120+
- 在左侧菜单中点击 **Users**
121+
- 找到并选择 **admin** 用户
122+
- 点击 **Credentials** 标签
123+
- 输入新密码(例如,`admin@123`
124+
- 禁用 **Temporary** 切换
125+
- 点击 **Reset Password**
126+
127+
4. 使用管理员用户和新密码登录 Tackle,地址为 <http://127.0.0.1:8080>
128+
129+
### 通过 Ingress 安全访问(生产环境)
130+
131+
端口转发仅用于临时访问。对于生产环境,请配置带有 TLS 的 Ingress。
132+
133+
#### Ingress 先决条件
134+
135+
- 一个域名(例如,`tackle.example.com`
136+
- 部署的 LoadBalancer 服务(请参见 [ALB 部署指南](https://docs.alauda.io/container_platform/4.1/configure/networking/how_to/alb/deploy_alb.html)
137+
- 安装 cert-manager
138+
139+
#### 创建 TLS 证书
140+
141+
```yaml
142+
apiVersion: cert-manager.io/v1
143+
kind: Certificate
144+
metadata:
145+
name: tackle-ssl-cert
146+
namespace: konveyor-tackle
147+
spec:
148+
commonName: tackle.example.com
149+
dnsNames:
150+
- tackle.example.com
151+
issuerRef:
152+
kind: ClusterIssuer
153+
name: cpaas-ca # 替换为您的 Issuer
154+
secretName: tackle-tls-secret
155+
usages:
156+
- server auth
157+
- client auth
158+
```
159+
160+
#### 创建 Ingress
161+
162+
```yaml
163+
apiVersion: networking.k8s.io/v1
164+
kind: Ingress
165+
metadata:
166+
annotations:
167+
nginx.ingress.kubernetes.io/backend-protocol: HTTP
168+
nginx.ingress.kubernetes.io/ssl-redirect: "true"
169+
name: tackle-ui-tls-ingress
170+
namespace: konveyor-tackle
171+
spec:
172+
ingressClassName: nginx # 替换为您的 Ingress Class
173+
rules:
174+
- host: tackle.example.com
175+
http:
176+
paths:
177+
- backend:
178+
service:
179+
name: tackle-ui
180+
port:
181+
number: 8080
182+
path: /
183+
pathType: Prefix
184+
tls:
185+
- hosts:
186+
- tackle.example.com
187+
secretName: tackle-tls-secret
188+
```
189+
190+
> \[!NOTE]
191+
> 将 `tackle.example.com` 替换为您的实际域名。
192+
193+
通过 `https://tackle.example.com` 访问 Tackle。
194+
195+
## 启用 KAI(Konveyor AI)
196+
197+
KAI 使用 AI 服务提供 AI 驱动的代码迁移辅助。它支持多个提供商和模型。
198+
199+
### 支持的提供商和模型
200+
201+
| 提供商 (`kai_llm_provider`) | 模型 (`kai_llm_model`) |
202+
| --------------------------- | ------------------------------------------------------------------------------ |
203+
| `openai` | `gpt-4`、`gpt-4o`、`gpt-4o-mini`、`gpt-3.5-turbo` |
204+
| `azure_openai` | `gpt-4`、`gpt-35-turbo` |
205+
| `bedrock` | `anthropic.claude-3-5-sonnet-20241022-v2:0`、`meta.llama3-1-70b-instruct-v1:0` |
206+
| `google` | `gemini-2.0-flash-exp`、`gemini-1.5-pro` |
207+
| `ollama` | `llama3.1`、`codellama`、`mistral` |
208+
| `groq` | `llama-3.1-70b-versatile`、`mixtral-8x7b-32768` |
209+
| `anthropic` | `claude-3-5-sonnet-20241022`、`claude-3-haiku-20240307` |
210+
211+
### 在 Tackle 中启用 KAI
212+
213+
1. 更新 Tackle 配置:
214+
215+
```yaml
216+
apiVersion: tackle.konveyor.io/v1alpha1
217+
kind: Tackle
218+
metadata:
219+
name: tackle
220+
namespace: konveyor-tackle
221+
spec:
222+
kai_solution_server_enabled: true
223+
kai_llm_provider: openai # 选择您的提供商
224+
kai_llm_model: gpt-4o-mini # 选择您的模型
225+
```
226+
227+
2. 创建 API 凭据 secret:
228+
229+
**对于 OpenAI:**
230+
231+
```bash
232+
kubectl create secret generic kai-api-keys -n konveyor-tackle \
233+
--from-literal=OPENAI_API_BASE='https://api.openai.com/v1' \
234+
--from-literal=OPENAI_API_KEY='<YOUR_OPENAI_KEY>'
235+
```
236+
237+
**对于 Google:**
238+
239+
```bash
240+
kubectl create secret generic kai-api-keys -n konveyor-tackle \
241+
--from-literal=GOOGLE_API_KEY='<YOUR_GOOGLE_API_KEY>'
242+
```
243+
244+
3. 强制操作员进行调和并获取新凭据:
245+
246+
```bash
247+
kubectl patch tackle tackle -n konveyor-tackle --type=merge -p \
248+
'{"metadata":{"annotations":{"konveyor.io/force-reconcile":"'"$(date +%s)"'"}}}'
249+
```
250+
251+
## Konveyor 组件概述
252+
253+
Konveyor 提供了一个模块化架构用于应用现代化:
254+
255+
| 组件 | 描述 |
256+
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
257+
| **Konveyor Hub** | 提供统一应用清单、评估模块(风险评估)和分析模块(静态代码分析)的中央控制平面。实现了带有管理员、架构师和迁移者角色的 RBAC。 |
258+
| **Kantra & Analyzer-LSP** | CLI 工具用于离线静态分析。Analyzer-LSP 通过语言服务器协议集成到 IDE(VSCode)中,以实时检测迁移问题。 |
259+
| **Konveyor AI (KAI)** | 基于 RAG 的 AI 助手,用于自动化代码修复。使用已解决事件存储进行上下文感知的代码补丁生成。 |
260+
| **Move2Kube** | 自动化从 Cloud Foundry/OpenShift 转换到 Kubernetes。三个阶段:收集、计划、转换。生成 Dockerfile、K8s 清单、Helm Charts 和 Tekton Pipelines。 |
261+
| **Forklift** | 用于将虚拟机从 VMware vSphere、oVirt 或 OpenStack 迁移到 KubeVirt 的虚拟机迁移工具。 |
262+
| **Crane** | 用于集群升级或跨分发迁移的 Kubernetes 到 Kubernetes 迁移工具。使用 Restic 或 VolSync 处理 PV 数据同步。 |
263+
264+
## 参考
265+
266+
- [Konveyor 官方文档](https://konveyor.io/docs/konveyor/)
267+
- [Konveyor 管理任务](https://konveyor.io/docs/konveyor/admintasks/)
268+
- [Konveyor Operator 仓库](https://github.com/konveyor/operator)

0 commit comments

Comments
 (0)