部署NAPP Automation Applicance
作为基于Photon OS的standard virtual appliance,NAPP Automation Applicance的部署非常简单,具体操作步骤如下:
下载napp-automation-0.1.27.ova,并通过OVF模版部署。






Note: 此处选择的VM Network网络需要与NSX-T/VCSA的管理网络以及后续部署中的Frontend网络路由可达。 与NSX-T网络可达: 其中NAPP automation 会自动以plugin的方式注册至NSX-T 与VCSA网络可达: 后续安装部署过程中,NAPP Automation Applicance会自动与VCSA交互进行一系列的自动化部署控制(包括,Supercluster部署/Context Library创建/NAPP的TKC部署) 与Frontend网络可达: 其中会自动通过NAPP Automation Applicance中的kubectl/kubectl vsphere来登录TKC的控制平面地址来进行集群操作 |
通过自定义模版输入NAPP Automation相关参数,此处的NAPP Automation静态IP地址可用于后续的图形化web界面登录。


部署完成后通过console进入NAPP Automation可看到如下提示,表示部署完成且状态正常。

Note: 如遇 NSX UI Plugin registration失败,请检查nsx-t manger的配置信息是否有误。 |
NAPP部署自动化(GUI)
第1步:通过NAPP Automation部署NAPP,目前支持图形化部署和命令行部署。本小节使用图形化部署展开介绍。
如果在之前的步骤中您将NAPP Automation通过Plugin方式注册到NSX-T Manger,那么您可以进入System>NAPP Deployment,通过向导(Deployment Wizard)开始部署。

如果在之前的步骤中您未将NAPP Automation注册到NSX-T,依然可以输入部署时配置的IP地址来直接访问其页面来使用NAPP Automaiton,两者的效果一致。

第2步:配置连接至VCSA的认证信息,点击CONNECT后验证通过,选择DATACENTER。

第3步:HAProxy配置部分
HAProxy关键字段解释如下:
SERVICE IP RANGE:若使用FrontEnd,那么SERVICE IP RANGE需要从FrontEnd网络中获取,此处需规避FrontEnd网关地址存在于此IP地址范围。
网络 | 特性 |
MGMT NETWORK | Supervisor Cluster使用管理网络连接到 HAProxy 负载均衡器并对其进行program编程 HAProxy数据平面 API endpoint被绑定到连接管理网络的网络接口。 分配给HAProxy控制平面VM的管理IP地址必须是管理网络上的静态IP,这样Supervisor Cluster才能可靠地连接到负载均衡器API。 HAProxy VM 的缺省网关位于这个网络. DNS 查询发生在这个网络。 |
WORKLOAD NETWORK | HAProxy控制平面VM使用工作负载网络访问Supervisor Cluster和Tanzu Kubernetes Cluster节点上的服务。 HAProxy 控制平面虚拟机通过此网络将流量转发到Supervisor Cluster和 Tanzu Kubernetes Cluster节点。 如果HAProxy控制平面VM以Default模式(两个NIC)部署,则工作负载网络必须提供用于访问load balancer services的逻辑网络。 在Default配置中,负载均衡器的VIP和Kubernetes cluster节点IP将来自该网络。它们需要被定义为网络内独立的、不重叠的范围。 注: 工作负载网络必须与管理网络位于不同的子网上。 |
FRONTEND NETWORK | 访问集群工作负载的外部客户端(例如用户或应用)通过前端网络访问使用VIP地址的后端load balanced services。 • 只有在HAProxy 控制平面VM 部署了三个NIC 时才使用前端网络。 • 推荐用于生产安装。 • 前端网络是您公开虚拟IP 地址(VIP) 的地方。 HAProxy 将负载其流量并将其转发到适当的后端。 |

第4步:Supervisor Cluster配置部分
TKGs Supervisor Cluster关键字段解释如下
- Load Balancing Settings>ADDRESS RANGE:
需从SERVICE IP RANGE中取值。
- CONTENT LIBRARY NAME:
指定内容库名称,安装过程中会自动创建,并加载json文件在线拉取VM镜像,所以须VCSA可访问互联网。
- STORAGE POLICY:
使用准备阶段创建的存储策略,由于本次测试将Supervisor Cluster部署和Guest Cluster选择了不同的存储,所以此处选择sys-vm-storagepolicy。

第5步:Guest Cluster配置部分
TKC相关信息录入,关键字段解释如下
- Namespace:最终承载NAPP的TKC Cluster集群所在的命名空间
- Gluster>NAME:最终承载NAPP的TKC Cluster集群名称

第6步:NSX>HOST/USERNAME/PASSWORD:输入所对接的NSX-T Manager 相关信息

第7步:NAPP configuration > FROM FACTOR:根据实际需求选择相应的NAPP规格
如下列出了不同规格对硬件资源的需求。由于资源有限,本次测试以Evaluation规格为例

对于Docker/HELM仓库的选择,可以使用online仓库,也可以使用自建仓库,本文不对自建仓库的基础搭建进行介绍,只对使用自建镜像仓库后,NAPP自动化部署所需的注意点进行阐述,详细信息请参见附录部分。
如果使用Online仓库,信息如下:
Helm Repository
Docker Registry
projects.registry.vmware.com/nsx_application_platform/clustering

第8步:提交完所有录入信息后,正式进入自动化安装部署预检查阶段,点击START PRE-CHECKS。

Note: 如果参数录入环节时间较长,可能导致此步骤检查超时,请后退(BACK)后重新返回此步骤。 |
第8步:提交完所有录入信息后,正式进入自动化安装部署TKGs Deployment阶段

Note: 此阶段根据网络情况,可能需要较长的时间,因为此阶段会自动创建订阅类型的Context Libraries,并在线拉取image。目前官方提供的库里有29个image,接近115G,只有全部拉取完成后才进行此阶段中Create Guest Cluster环节的创建。“Coffee Time” |
Deploy HA Proxy为Success状态后,在VCSA上自动以ova方式部署版本为0.2.0的haproxy虚拟机,并自动启动

Wait for Certificate为Success状态后,自动从Haproxy获取证书用于后续Tanzu自动安装时自动加载
Create Content Library为Success状态后,在VCSA上会自动创建订阅类型的Content Library。但此时所有image并未同步下载完成。

Activate TKGs Supervisor Cluster为Success状态后,在VCSA上会自动创建完成TKGs的Supervisor Cluster。

Create Virtual Machine Classes为Success状态后,可在VCSA中查看到有nappclass的VM Classes创建,用于后续的Guest Cluster的workload node创建。

Create Namespace为Success状态后,在VCSA上会自动创建名为ns01-napp31的NameSpace。

Login to TKGs为Success状态后,可在NAPP Automation虚拟机中使用kubectl命令查看当前TKGs集群状态。

Create Guest Cluster为Success状态后,可在VCSA中看到Guest Cluster已经部署成功

第9步:提交完所有录入信息后,正式进入自动化安装部署NAPP Deployment阶段,点击START NAPP DEPLOYMENT,进行安装前检查后,正式开始自动化部署NAPP。

第10步:GO TO NAPP后进入NAPP部署页面,可通过点击百分比查看当前安装部署处于哪个环节。



第11步:最终部署成功如下图所示。

第12步:使能NSX Intelligence功能



可针对集群级别或主机级别为颗粒度来使能NSX Intelligence

第13步:检查部署情况
在napp automation虚拟机上使用kubectl命令检查相关pod状态

在napp automation虚拟机上使用kubectl命令检查相关service状态

NAPP部署自动化(CLI)
第1步:产生配置文件
通过SSH登录NAPP Automation Applicance,输入命令如下
cd /opt/napp ./napp-automation init |
第2步:修改配置文件参数
编写config.yml,具体参数信息含义与GUI配置一致,这里不再赘述。
cd /opt/napp vi config.yml |
Note: 本小结旨在介绍CLI安装步骤,实际地址规划与通过GUI安装非相同环境,所以具体参数信息并不与GUI部署章节一致,请知悉。 |

第3步:进行tanzu with vsphere安装,并自动部署guest cluster。
./napp-automation k8s |

第4步:进行NAPP自动化部署
./napp-automation napp |

第5步:查看NAPP部署情况

总结
通过使用NAPP Automation工具,可以大幅简化相对复杂的NAPP部署上线,在以往的部署当中需要手工准备Tanzu平台以及K8S集群等等一些列的基础环境,NAPP Automation工具使得这些准备工作以及NAPP本身的部署完全自动化,减少了运维人员的时间成本,让其有更多的时间聚焦于平台之上高级功能的使用。
附录
版本BUG修复
目前发布的NAPP Automation v0.1.27版本中存在bug(如下图所示),会在接下来发布的最新版本中得到修复。

如使用当前发布版本进行NAPP自动化部署,请执行如下操作来解决bug问题
第1步:通过SSH登录NAPP Automation VM执行如下命令
systemctl stop napp-automation.service |
第2步:下载如下文件,上传至/opt/napp目录替换原始napp-automation文件
第3步:修改新上传的napp-automation文件权限
chmod 750 napp-automation |
第4步:更改kubectl-vsphere和kubectl文件目录
cd /opt/napp/ mv kubectl-vsphere /usr/local/bin/kubectl-vsphere mv kubectl /usr/local/bin/kubectl |
#5 重新启动napp-automation服务
systemctl start napp-automation.service |
#6查看当前napp-automation版本,已经变为v0.1.29。
cd /opt/napp/ ./napp-automation version |
使用自建HARBOR仓库注意事项
由于NAPP安装镜像包接近12GB,通过VMware在线仓库拉取较慢,所以可以使用本地仓库,但NAPP安装使用了HTTPS,所以自建HARBOR仓库需要预先创建自签名证书,并在NSX-T Manger以及TKGs中加载,证书加载步骤如下。
第1步:为NSX-T Manger加载HARBOR根证书。
通过ssh使用root账户登录NSX-T Manger
cd /usr/local/share/ca-certificates/ |
将已经创建好的根证书拷贝至此
更新证书
update-ca-certificates |
第2步:为Tanzu加载证书。
通过如下命令获取HARBOR证书文件
openssl s_client -connect harbor.vmwlab.net:443 |
将显示信息中的如下内容复制至临时的记事本文件

对上述内容转换为BASE64编码,可使用在线转码工具完成。然后登录Supervisor Cluster集群.

在defaultCNI: antrea下添加如下图所示内容,其中data部分为上一步骤中转换后的BASE64编码,Name名称可任意。
kubectl edit TkgServiceConfiguration |

Note: 如果使用NAPP Automation自动化部署,需要在VCSA中观察当Supervisor Cluster部署成功后,还未开始部署TKC之前进行修改,否则对以创建集群无法即时生效。如果在TKC集群创建后修改,详细信息请参阅官方文档 https://docs.vmware.com/en/VMware-vSphere/7.0/vmware-vsphere-with-tanzu/GUID-376FCCD1-7743-4202-ACCA-56F214B6892F.html |
NAPP 3.2.1部署注意事项
目前NAPP Automation自动化部署GUI界面下不支持NAPP版本修改, NAPP缺省部署版本为3.2.0,且截止本文档编写时,在线官方HELM/Docker仓库还未提供NAPP 3.2.1镜像。所以如果要自动化部署NAPP 3.2.1需修改config.yml以及使用自建仓库。
通过修改config.yml中napp section,实现3.2.1版本的napp安装

Service Name FQDN配置
正常部署情况下,Service Name地址会使用FRONTEND NETWORK的第四个地址,需要在外部DNS配置DNS解析。
