青蛙小白
#Grpc

gRPC Java:Spring boot整合gRPC

接下来我们需要把gRPC和Spring boot整合在一起,这里主要记录我们的整合方式。 项目目录结构 项目的目录结构如下: foo-svc ├── foo-svc-proto │ ├── build.gradle │ └── src │ └── main │ └── proto │ ├── xx1_service.proto │ └── xx2_service.proto ├── foo-svc-server │ ├── build.gradle │ └── src │ └── main │ ├── java │ └── resources │ └── application.yml ├── build.gradle ├── gradle.properties └── settings.gradle 一个gRPC服务的项目由两个子项目组成:

#Kubernetes

Kubernetes 1.6 高可用集群部署

我们已经可以很方便的使用kubeadm快速初始化Kubernetes集群,但kubeadm当前还不能用于生产环境,同时kubeadm初始化的集群的Master节点不是高可用的,后端存储etcd也是单点。因此,本文将基于Kubernetes二进制包手动部署一个高可用的Kubernetes 1.6集群,将启用ApiServer的TLS双向认证和RBAC授权等安全机制。 通过这个手动部署的过程,我们还可以更加深入理解Kubernetes各组件的交互和运行原理。

#Ansible

Ansible playbook入门

playbook是Ansible进行配置管理的基本组件。 第一个playbook Ansible playbook的文件格式为yaml,具体yaml的语法可以参考这里。 下面我们编写一个使用yum安装nginx的playbook作为入门,nginx.yaml的内容如下: --- - hosts: web-servers tasks: - selinux: state=disabled - name: Add repository yum_repository: name: nginx baseurl: http://nginx.org/packages/centos/7/$basearch/ gpgcheck: no enabled: yes description: nginx repo - name: Install nginx yum: name=nginx state=present - name: Copy nginx.conf template: src=./nginx.conf.j2 dest=/etc/nginx/nginx.conf owner=root group=root mode=0644 validate='nginx -t -c %s' notify: - Restart nginx handlers: - name: Restart nginx systemd: name=nginx state=restarted enabled=yes - hosts: web-servers定义了该playbook的目标主机,这里指定了资源清单文件/etc/ansible/hosts中的web-servers组,如果目标是所有主机则可以使用all tasks:定义该playbook的task集合,可以使用ansible-playbook nginx.yaml --list-task打印playbook中的task。 - selinux: state=disabled定义了一个名称为selinux的task,使用Ansible的selinuxmodule禁用目标主机上的色Linux。 - name: Add repository定义的task使用Ansible的yum_repositorymodule向目标主机添加nginx官方的yum repo - name: Install nginx定义的task使用Ansible的yummodule在各个目标主机上安装nginx - name: Copy nginx.conf定义的task使用Ansible的templatemodule将nginx.conf.j2模板生成nginx.conf配置文件并推送到各个目标主机。notify指定了配置文件推送成功且配置文件内容发生变化侯触发名称为Restart nginx的handler。 handlers中只有一个Restart nginx的handler,使用Ansible的systemdmodule实现重启nginx服务。 nginx.conf.j2模板是python的Jinja2模本,这里作为一个入门的例子,先不考虑模板功能,直接使用一个期望的nginx配置文件的内容即可。