MISE_hw4_体系结构作业
MISE_hw4_体系结构作业
本文用以记载在完成MISE体系结构作业时遇到的一些踩坑和困难。
- 操作系统:macOS(m1芯片)
使用到的部分网址:
- 文档工程:
- 凤凰架构:https://icyfenix.cn
- Vuepress 支持的文档工程:https://github.com/fenixsoft/awesome-fenix
- 前端工程:
- Mock.js 支持的纯前端演示:https://bookstore.icyfenix.cn
- Vue.js 2 实现前端工程:https://github.com/fenixsoft/fenix-bookstore-frontend
- 后端工程:
- Spring Boot 实现单体架构:https://github.com/fenixsoft/monolithic_arch_springboot
- Kubernetes 为基础设施的微服务架构:https://github.com/fenixsoft/microservice_arch_kubernetes
- Istio 为基础设施的服务网格架构:https://github.com/fenixsoft/servicemesh_arch_istio
Spring Boot 实现单体架构
单体架构比较简单,在运行过程中未遇到困难,按照文档进行配置即可。
Kubernetes 为基础设施的微服务架构
由于文档中以Windows操作系统为例,部分操作不适用于macOS。
下载Docker Desktop
- 官网有mac版本,下载正确版本安装即可
- 更换国内镜像
安装kubernetes
- mac 新版本的 docker 自带 Kubernetes,Enable 后就会自动开启下载
- 在Settings中选中Kubernetes并apply,docker中k8s图标变绿即启动成功
安装skaffold
curl安装
参考https://skaffold.dev/docs/install/
运行以下命令:
1 | # For macOS on ARMv8 (arm64) |
homebrew安装
运行以下命令
1 | brew install skaffold |
运行配置
-
下载源码后,运行./mvnw package可能会出现报错,需要运行以下命令
1
chmod +x ./mvnw
-
mac用户需要修改dockerfile中的内容,修改为
1
FROM arm64v8/openjdk:11-oracle
-
如果使用java9以上编译,需要在pom文件中增加代码
1
<argLine>--add-opens=java.base/java.net=ALL-UNNAMED</argLine>
-
最后按照文档运行即可
1
2
3
4# 编译打包
./mvnw package
# 启动Skaffold# 此时将会自动打包Docker镜像,并部署到Kubernetes中
skaffold dev
Istio 为基础设施的服务网格架构
由于文档中以Windows操作系统为例,部分操作不适用于macOS。
安装Docker Desktop
同上
安装kubectl
参考https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-macos/#install-kubectl-binary-with-curl-on-macos
用curl安装
注意intel芯片还是m1芯片,本人为m1芯片
- 运行以下命令下载最新的发行版
1 | curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl" |
-
验证可执行文件
下载 kubectl 的校验和文件
1
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl.sha256"
根据校验和文件,验证 kubectl
1
echo "$(cat kubectl.sha256) kubectl" | shasum -a 256 --check
-
将 kubectl 置为可执行文件
1
chmod +x ./kubectl
-
将可执行文件 kubectl 移动到系统可寻址路径
PATH
内的一个位置1
2sudo mv ./kubectl /usr/local/bin/kubectl
sudo chown root: /usr/local/bin/kubectl -
测试一下
1
kubectl version
用homebrew安装
运行以下命令
1 | brew install kubectl |
可以用同样的方法测试
在Docker Desktop中启用Kubernetes
同上
安装Istio
下载安装包
运行以下命令
1 | curl -L https://istio.io/downloadIstio | sh - |
把bin目录下的istioctl添加到PATH
1 | export ISTIO_HOME=/Users/larry/Software/istio/istio-1.10.3 |
检测是否可以执行安装
运行以下命令
1 | istioctl x precheck |
如果可以安装会得到✔ No issues found when checking the cluster. Istio is safe to install or upgrade!
安装
1 | istioctl install |
简单的检查
运行以下命令
1 | # 检查istio-system命令空间下的Pod |
以demo方式安装
1 | istioctl manifest apply --set profile=demo |
安装skaffold
同上
运行配置
-
下载源码后,运行./mvnw package可能会出现报错,需要运行以下命令
1
chmod +x ./mvnw
-
mac用户需要修改dockerfile中的内容,修改为
1
FROM arm64v8/openjdk:11-oracle
-
如果使用java9以上编译,需要在pom文件中增加代码
1
<argLine>--add-opens=java.base/java.net=ALL-UNNAMED</argLine>
-
如果运行./mvnw package遇到payment部分false,可以根据报错修改pom.xml
例如,这是我修改后的pom.xml文件的部分内容
1
2
3
4
5<argLine>-Dfile.encoding=UTF-8</argLine>
<argLine>
--add-opens=java.base/java.net=ALL-UNNAMED
--add-opens=java.base/java.lang.invoke=ALL-UNNAMED
</argLine> -
最后按照文档运行即可
1
2
3
4# 编译打包
./mvnw package
# 启动Skaffold# 此时将会自动打包Docker镜像,并部署到Kubernetes中
skaffold dev