Kunbernetes利器-helm

helm是什么?

引用helm官方的英文介绍:

  • The package manager for Kubernetes
  • Helm is the best way to find, share, and use software built for Kubernetes.

意思就是helm是kubernetes生态中的一个包管理工具,可以快速发现、共享以及为Kubernetes构建应用.

为什么要拥抱helm?

在没使用helm之前,向kubernetes部署应用,我们要依次部署deployment、svc等,步骤较繁琐。况且随着很多项目微服务化,复杂的应用在容器中部署以及管理显得较为复杂,helm通过打包的方式,支持发布的版本管理和控制,很大程度上简化了Kubernetes应用的部署和管理.

本文包含的主要内容
1
2
3
4
5
- 安装helm
- helm常用命令
- 自定义Chart
- Chart模板
- 参考文档

Read More

与ansible的第一次对话

ansible 是个神马东东?

  1. 基于python的自动化运维工具
  2. 可以实现批量执行命令、批量系统配置、批量部署等自动化功能

通信协议

  1. ansible默认通过SSH协议实现主机之间的通信,管理主机

敲下第一个命令

1
2
ansible --version #获取版本,确定安装成功
ansible all -a "/bin/echo hello"

tips:安装ansible,请参考 http://www.ansible.com.cn/docs/intro_installation.html

ansible hosts

hosts路径:cat etc/ansible/hosts
hosts可注册目标主机的地址,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#   - You can enter hostnames or ip addresses
# - A hostname/ip can be a member of multiple groups

# Ex 1: Ungrouped hosts, specify before any group headers.

139.159.228.59
192.168.1.188
## green.example.com
## blue.example.com
## 192.168.100.1
## 192.168.100.10

# Ex 2: A collection of hosts belonging to the 'webservers' group

## [webservers]
## alpha.example.org
## beta.example.org
## 192.168.1.100
## 192.168.1.110

SSH认证

ansible基于SSH协议进行通信,因此主机之间通信需要取得SSH认证

1
2
3
4
5
6
cd ~/.ssh
ls -a
# authorized_keys id_rsa id_rsa.pub
# authorized_keys 假设当前主机为:A,如果另一台主机B要通过SSH和A通信,将A主机下的公钥添加到B主机下的authorized_keys
#id_rsa.pub 公钥
#id_rsa 私钥

模拟一个场景:A主机下执行playbook 远程给主机B创建一个名为:hello的目录

step1:

1
将A主机下的ssh目录下的公钥(id_rsa.pub)添加到B主机ssh目录下的authorized_keys

step2:

1
在A主机下的/etc/ansible/hosts里面添加B主机的IP地址

step3:ansible-playbook helloPlayBook.yml -i hosts #执行第一个playbook

helloPlayBook.yml:
1
2
3
4
5
6
7
- hosts: 139.159.228.59
tasks:
- name: creat a folder
command: mkdir hello
# 如果 /etc/ansible/hosts注册了 139.159.228.59 ,执行:ansible-playbook helloPlayBook.yml
# 如果 /etc/ansible/host未注册 139.159.228.59,执行:ansible-playbook helloPlayBook.yml -i 139.159.228.59,
# 多个目标主机地址用逗号分隔
tips :更多内容可以参考: http://ansible.com.cn/docs/

docker入门-搭建wordpress

运行mysql

1
2
3
4
docker pull mysql
docker run --name mysql_wp -e MYSQL_ROOT_PASSWORD=king -d mysql 数据库名:mysql_wp 密码:king 端口:3306
docker exec -it [container_id] /bin/sh 进入容器
mysql -uroot -p king 测试mysql 是否正常运行

运行wordpress

1
2
3
docker pull wordpress
docker run --name some-wordpress --link mysql_wp:mysql -p 8080:80 -d wordpress 连接mysql ,暴露外部端口为8080
http://localhost:8080 访问wordpress

docker-compse.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
version: '3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress

wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8080:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:
运行: docker-compose up -d
访问:http://localhost:8080