membphis commented on a change in pull request #1376: Create how-k8s-deploy-cn.md URL: https://github.com/apache/incubator-apisix/pull/1376#discussion_r401357344
########## File path: doc/how-k8s-deploy-cn.md ########## @@ -0,0 +1,449 @@ +在k8s上面搭建apisix网关 +# +## 本地安装apisix +- 使用yum安装 +```bash +yum install -y https://github.com/apache/incubator-apisix/releases/download/1.1/apisix-1.1-0.el7.noarch.rpm +``` +## 本地安装dashboard +参见:[https://github.com/apache/incubator-apisix/tree/v1.1](https://github.com/apache/incubator-apisix/tree/v1.1) -- dashboard安装部分 +或者 [https://blog.csdn.net/cyxinda/article/details/105099571](https://blog.csdn.net/cyxinda/article/details/105099571)--dashboard安装部分 +## 工作目录结构: +如下是最终生成的工作目录 +```python +workspace +|-- docker +| |-- apisix +| | |-- apisix.dockerfile #apisix的dockerfile +| | |-- config.yaml #apisix的配置文件 +| | |-- dashboard #dashboard安装目录 +| |-- etcd +| | |-- etcd.conf.yml #etcd的配置文件 +| | |-- etcd.dockerfile #etcd的dockerfile +| |-- uuid #测试项目【uuid生成器】,普通的jar项目 +| |-- uuid-service-0.0.1-SNAPSHOT.jar +| |-- uuid.dockerfile +| |-- incubator-apisix-docker-master #制作第一层docker镜像的目录 +|-- k8s + |-- apisix.yaml #apisix的k8s编排文件 + |-- etcd.yaml #etcd的k8s编排文件 + |-- uuid.yaml #测试项目【uuid生成器】的k8s编排文件 +``` +## 制作apisix的docker镜像 +- 下载incubator-apisix-docker到workspace/docker目录中 +下载地址: [https://github.com/apache/incubator-apisix-docker](https://github.com/apache/incubator-apisix-docker) +- build docker镜像: +在本地目录**workspace/docker/incubator-apisix-docker-master/** 下,执行如下build命令: + ```bash + docker build -t harbor.aipo.lenovo.com/apisix/apisix:master-alpine -f alpine/Dockerfile alpine + docker push harbor.aipo.lenovo.com/apisix/apisix:master-alpine + ``` + 生成apisix的第一层镜像,并保存到了本地的harbor服务器上面 +## 制作etcd的docker镜像 +- 在目录**workspace/docker/etcd/** 中,复制etcd配置文件到当前目录 + ```bash + cp ../incubator-apisix-docker-master/example/etcd_conf/etcd.conf.yml . + ``` +- 创建etcd的dockerfile:**etcd.dockerfile**,内容如下: + ```python + FROM bitnami/etcd:3.3.13-r80 + COPY etcd.conf.yml /opt/bitnami/etcd/conf/etcd.conf.yml + EXPOSE 2379 2380 + ``` +- 生成docker镜像 + ```python + docker build -t harbor.aipo.lenovo.com/apisix/etcd:3.3.13 -f etcd.dockerfile . + docker push harbor.aipo.lenovo.com/apisix/etcd:3.3.13 + ``` + 生成etcd镜像,并将镜像保存到harbor上面 +## 获取集群dns信息 +- 在k8s集群的终端,获取集群域名 +随便找到一个部署在k8s上面的pod,进入到容器内部: + ```bash + kubectl -n kube-system exec -it pod/metrics-server-749c9798c6-zkg2m -- /bin/sh + ``` + 在容器内部,查看dns配置: + ```bash + [root@k8s-1 bin]# kubectl -n kube-system exec -it pod/metrics-server-749c9798c6-zkg2m -- /bin/sh + / # cat /etc/resolv.conf + nameserver 10.1.0.10 + search kube-system.svc.cluster.local svc.cluster.local cluster.local openstacklocal + options ndots:5 + / # + ``` + 其中kube-system.svc.cluster.local的结构是 + > \<service_name\>\.\<namespace\>\.svc\.\<domain\> + 每个部分的字段意思: + > > service_name: 服务名称,就是定义 service 的时候取的名字 + > > namespace:service 所在 namespace 的名字 + > > domain:提供的域名后缀,比如默认的 cluster.local + 可以参考:[https://cizixs.com/2017/04/11/kubernetes-intro-kube-dns/](https://cizixs.com/2017/04/11/kubernetes-intro-kube-dns/) + + domain这个字段就是我们要找的:在本集群中的值就是:**cluster.local** + nameserver 10.1.0.10也可以知道dns的域名服务的ClusterIP为:10.1.0.10 +- 获取集群dns的ClusterIP +check一下步骤一中,找到的ClusterIP是否正确 +执行如下命令: + ```bash + [root@k8s-1 bin]# kubectl -n kube-system get svc + NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE + etcd ClusterIP None <none> 2379/TCP 133d + kube-controller-manager-headless ClusterIP None <none> 10252/TCP 133d + kube-dns ClusterIP 10.1.0.10 <none> 53/UDP,53/TCP,9153/TCP 191d + kube-scheduler-headless ClusterIP None <none> 10251/TCP 133d + kubelet ClusterIP None <none> 10250/TCP 133d + kubernetes-dashboard NodePort 10.1.213.19 <none> 443:30003/TCP 157d + metrics-server ClusterIP 10.1.185.71 <none> 443/TCP 133d + tiller-deploy ClusterIP 10.1.55.173 <none> 44134/TCP 155d + ``` + kube-dns服务的ip就是k8s的DNS服务的ClusterIP,可以验证步骤1找到的ip与此步骤的ip是一致的:10.1.0.10 + +## 重新制作镜像 +- 目的有两个: + 1. 加入dashboard + 2. 便于修改apisix的配置文件 + - 在<strong>workspace/docker/apisix/</strong>目录下 + 1. 拷贝incubator-apisix-docker-master中的配置文件到当前目录 + ```bash + cp ../incubator-apisix-docker-master/example/apisix_conf/config.yaml . + ``` + 2. 拷贝步骤【本地安装dashboard】中安装好的dashboard + ```bash + cp -r /usr/local/apisix/dashboard . + ``` +- 修改apisix的配置文件 + ```yaml + apisix: Review comment: we should use space instead of `tab` ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services