From 8a204467faece5ea2fce68e4be865d2f74169399 Mon Sep 17 00:00:00 2001 From: "{admin@attacker.club}" Date: Sun, 21 Jul 2024 01:29:01 +0800 Subject: [PATCH] init --- 1.docs/1.1 docker.md | 73 ++++ 1.docs/1.2 docker-compose.md | 19 + 1.docs/2.1 harbor.md | 49 +++ 1.docs/kubernets-install.sh | 348 ++++++++++++++++++ 2.docker/confluence.dockerfile | 9 + 2.docker/confluence.sh | 20 + 2.docker/django_python.dockerfile | 17 + 2.docker/docker-install | 102 +++++ 2.docker/docker-tools.sh | 103 ++++++ 2.docker/etl.sh | 57 +++ 2.docker/frp.sh | 6 + 2.docker/frpc.dockerfile | 15 + 2.docker/frpc.ini | 38 ++ 2.docker/frps.dockerfile | 15 + 2.docker/frps.ini | 12 + 2.docker/gitlab.sh | 19 + 2.docker/gogs.sh | 15 + 2.docker/holmes_api_tomcat.dockerfile | 18 + 2.docker/holmes_ui_npm.dockerfile | 17 + 2.docker/jenkins.sh | 16 + 2.docker/jumpserver.sh | 42 +++ 2.docker/kuboard.sh | 14 + 2.docker/mysql5.7.sh | 15 + 2.docker/mysql8.sh | 21 ++ 2.docker/openldap.sh | 19 + 2.docker/openwrt.sh | 25 ++ 2.docker/php.sh | 0 2.docker/phpldapadmin.sh | 16 + 2.docker/poste-mail.sh | 20 + 2.docker/python.Dockerfile-alpine | 41 +++ 2.docker/python.Dockerfile-centos | 19 + 2.docker/python.Dockerfile-slim | 13 + 2.docker/python.Dockerfile-ubuntu | 19 + 2.docker/redis.sh | 19 + 2.docker/sshd-centos7-dockerfile | 17 + 2.docker/sshd.dockerfile | 36 ++ 2.docker/sshd.sh | 9 + 2.docker/yearning.sh | 15 + 2.docker/zabbix.sh | 87 +++++ 3.kubernetes/Manifests/busybox.yml | 14 + 3.kubernetes/Manifests/cmdb.yml | 0 3.kubernetes/Manifests/halloworld.yml | 20 + 3.kubernetes/Manifests/nginx.yml | 22 ++ 3.kubernetes/configmap/cmdb-configmap.yml | 9 + 3.kubernetes/configmap/configmap.yml | 8 + 3.kubernetes/deployment/deploy-cmdb.yml | 82 +++++ 3.kubernetes/deployment/deploy-myblog.yml | 65 ++++ 3.kubernetes/deployment/sshd-pod-svc.yml | 13 + 3.kubernetes/deployment/sshd-pod.yml | 28 ++ 3.kubernetes/endpoint/mysql.yml | 24 ++ 3.kubernetes/endpoint/readme.md | 4 + .../hpa-cronhpa/demo_deployment_cronhpa.yaml | 41 +++ 3.kubernetes/hpa/components.yaml | 186 ++++++++++ .../bookstore.details.ingress.yaml | 17 + .../bookstore.ingress.yml | 24 ++ .../bookstore.reviews.ingress.yaml | 19 + .../detail.dpl.yml | 22 ++ .../detail.svc.yml | 13 + .../demo-多路径转发及重写的实现/readme.md | 28 ++ .../reviews.dpl.yml | 25 ++ .../reviews.svc.yml | 12 + 3.kubernetes/ingress/https_myblog.yml | 26 ++ 3.kubernetes/ingress/ingress_cmdb.yml | 17 + 3.kubernetes/ingress/ingress_myblog.yml | 23 ++ 3.kubernetes/ingress/mandatory.yml | 296 +++++++++++++++ 3.kubernetes/ingress/tls.crt | 20 + 3.kubernetes/ingress/tls.key | 28 ++ 3.kubernetes/jenkins/add_domian.yaml | 17 + 3.kubernetes/jenkins/jenkins-all.yaml | 118 ++++++ 3.kubernetes/jenkins/jenkins-pvc.yaml | 12 + .../pipline/pipline-deploy.Jenkinsfile | 133 +++++++ .../jenkins/pipline/pipline-image.Jenkinsfile | 40 ++ 3.kubernetes/jenkins/pipline/pod.Jenkinsfile | 100 +++++ .../kubernetes-dashboard/dashboard-admin.yml | 21 ++ .../kubernetes-dashboard/recommended.yaml | 303 +++++++++++++++ .../v3.2.1/cluster-configuration.yaml | 174 +++++++++ .../v3.2.1/kubesphere-installer.yaml | 307 +++++++++++++++ 3.kubernetes/kubesphere/v3.2.1/svc.yml | 13 + 3.kubernetes/limitRange/cpu-limit.yml | 12 + 3.kubernetes/limitRange/mem-limit.yml | 12 + 3.kubernetes/one-pod/pod-with-volume.yml | 39 ++ 3.kubernetes/one-pod/sshd-pod.yml | 13 + 3.kubernetes/pod-lifecycle/pod-lifecycle.yml | 40 ++ 3.kubernetes/rbac/demo-admin-rbac.yaml | 30 ++ 3.kubernetes/rbac/demo-limit.yml | 22 ++ 3.kubernetes/secret/cmdb-secret.yml | 11 + 3.kubernetes/secret/secret.yml | 9 + 3.kubernetes/services/svc-cmdb.yml | 13 + 3.kubernetes/services/svc-myblog.yml | 13 + 3.kubernetes/storage/nfs-pv.yml | 14 + 3.kubernetes/storage/nfs-pvc.yml | 11 + 3.kubernetes/storage/nginx-nfs.yml | 30 ++ .../storageClass/nfs-nginx-nginx-pvc.yml | 55 +++ .../nfs-nginx-pvc-statefulset.yml | 49 +++ 3.kubernetes/storageClass/nfs-provisioner.yml | 114 ++++++ 3.kubernetes/storageClass/nfs-pvc-1g-test.yml | 13 + 3.kubernetes/two-pod/cmdb.yml | 42 +++ 3.kubernetes/two-pod/myblog.yml | 42 +++ 3.kubernetes/two-pod/mysql.yml | 48 +++ 3.kubernetes/two-pod/test.md | 0 4.monitor/consul.yml | 44 +++ 4.monitor/grafana/granfna.yml | 66 ++++ 4.monitor/grafana/readme.md | 15 + 4.monitor/node-exporter.yml | 42 +++ 4.monitor/prometheus/1.rbac.yml | 55 +++ 4.monitor/prometheus/2.configmap.yml | 59 +++ 4.monitor/prometheus/3.deploy.yml | 50 +++ 4.monitor/prometheus/consul.py | 49 +++ 4.monitor/prometheus/consul_delete_all.py | 38 ++ 4.monitor/prometheus/consul_failed_clean.py | 38 ++ 4.monitor/pvc.yml | 0 4.monitor/readme.md | 9 + LICENSE | 201 ++++++++++ README.md | 12 + deploy-kubernetes-helm/README.md | 19 + deploy-kubernetes-helm/helm仓库.md | 14 + deploy-kubernetes-helm/常用命令.md | 26 ++ deploy/jenkins-ci.md | 18 + docker-compose-all-one/README.md | 61 +++ .../config/elasticsearch/elasticsearch.yml | 11 + docker-compose-all-one/config/history/old.yml | 51 +++ docker-compose-all-one/config/mysql/my.cnf | 19 + docker-compose-all-one/config/mysql57/my.cnf | 19 + .../config/redis/redis.conf | 64 ++++ .../config/rocketmq/broker.conf | 17 + docker-compose-all-one/docker-compose.yml | 44 +++ docker-compose-all-one/docs/es.md | 7 + docker-compose-all-one/docs/grafana.md | 5 + docker-compose-all-one/docs/kafka.md | 12 + .../services/docker-compose-bak.yml | 69 ++++ .../services/elasticsearch-head.yml | 11 + .../services/elasticsearch.yml | 16 + docker-compose-all-one/services/grafana.yml | 13 + .../services/kafka-manager.yml | 14 + docker-compose-all-one/services/kafka.yml | 25 ++ docker-compose-all-one/services/mysql.yml | 19 + docker-compose-all-one/services/nacos.yml | 18 + docker-compose-all-one/services/openldap.yml | 19 + docker-compose-all-one/services/redis.yml | 18 + docker-compose-all-one/services/zookeeper.yml | 17 + docker-compose-yaml/base.sh | 93 +++++ docker-compose-yaml/readme.md | 22 ++ docker-compose-yaml/zabbix-docker.sh | 81 ++++ docker-compose-yaml/zabbix.sh | 0 docker-compose-yaml/zabbix.yml | 0 docker-compose-yaml/zabbix/mysql.zabbix.yml | 112 ++++++ docker-compose-yaml/zabbix/pg.zabbix.yml | 71 ++++ docker-compose-yaml/zabbix/readme.md | 62 ++++ kubernets_api/consul-node.py | 105 ++++++ kubernets_api/consul-up.py | 157 ++++++++ kubernets_api/consul.py | 157 ++++++++ kubernets_api/login.py | 58 +++ kubernets_api/pod.py | 70 ++++ other/.DS_Store | Bin 0 -> 6148 bytes other/configmap_and_secret.md | 24 ++ other/demo-cmdb部署.md | 120 ++++++ other/demo-nginx部署.md | 13 + other/demo-存储.md | 51 +++ other/deployment.md | 11 + other/image/jenkins1.png | Bin 0 -> 379623 bytes other/image/jenkins2.png | Bin 0 -> 93238 bytes other/image/jenkins3.png | Bin 0 -> 83996 bytes other/ingress-nginx.md | 24 ++ other/jenkins-部署.md | 18 + other/k8s常用命令汇总.md | 121 ++++++ other/kubernetes-dashboard.md | 48 +++ other/调度md | 9 + other/面试题...md | 5 + 168 files changed, 7107 insertions(+) create mode 100644 1.docs/1.1 docker.md create mode 100644 1.docs/1.2 docker-compose.md create mode 100644 1.docs/2.1 harbor.md create mode 100644 1.docs/kubernets-install.sh create mode 100644 2.docker/confluence.dockerfile create mode 100644 2.docker/confluence.sh create mode 100644 2.docker/django_python.dockerfile create mode 100644 2.docker/docker-install create mode 100644 2.docker/docker-tools.sh create mode 100644 2.docker/etl.sh create mode 100644 2.docker/frp.sh create mode 100644 2.docker/frpc.dockerfile create mode 100644 2.docker/frpc.ini create mode 100644 2.docker/frps.dockerfile create mode 100644 2.docker/frps.ini create mode 100644 2.docker/gitlab.sh create mode 100644 2.docker/gogs.sh create mode 100644 2.docker/holmes_api_tomcat.dockerfile create mode 100644 2.docker/holmes_ui_npm.dockerfile create mode 100644 2.docker/jenkins.sh create mode 100644 2.docker/jumpserver.sh create mode 100644 2.docker/kuboard.sh create mode 100644 2.docker/mysql5.7.sh create mode 100644 2.docker/mysql8.sh create mode 100644 2.docker/openldap.sh create mode 100644 2.docker/openwrt.sh create mode 100644 2.docker/php.sh create mode 100644 2.docker/phpldapadmin.sh create mode 100644 2.docker/poste-mail.sh create mode 100644 2.docker/python.Dockerfile-alpine create mode 100644 2.docker/python.Dockerfile-centos create mode 100644 2.docker/python.Dockerfile-slim create mode 100644 2.docker/python.Dockerfile-ubuntu create mode 100644 2.docker/redis.sh create mode 100644 2.docker/sshd-centos7-dockerfile create mode 100644 2.docker/sshd.dockerfile create mode 100644 2.docker/sshd.sh create mode 100644 2.docker/yearning.sh create mode 100644 2.docker/zabbix.sh create mode 100644 3.kubernetes/Manifests/busybox.yml create mode 100644 3.kubernetes/Manifests/cmdb.yml create mode 100644 3.kubernetes/Manifests/halloworld.yml create mode 100644 3.kubernetes/Manifests/nginx.yml create mode 100644 3.kubernetes/configmap/cmdb-configmap.yml create mode 100644 3.kubernetes/configmap/configmap.yml create mode 100644 3.kubernetes/deployment/deploy-cmdb.yml create mode 100644 3.kubernetes/deployment/deploy-myblog.yml create mode 100644 3.kubernetes/deployment/sshd-pod-svc.yml create mode 100644 3.kubernetes/deployment/sshd-pod.yml create mode 100644 3.kubernetes/endpoint/mysql.yml create mode 100644 3.kubernetes/endpoint/readme.md create mode 100644 3.kubernetes/hpa-cronhpa/demo_deployment_cronhpa.yaml create mode 100644 3.kubernetes/hpa/components.yaml create mode 100644 3.kubernetes/ingress/demo-多路径转发及重写的实现/bookstore.details.ingress.yaml create mode 100644 3.kubernetes/ingress/demo-多路径转发及重写的实现/bookstore.ingress.yml create mode 100644 3.kubernetes/ingress/demo-多路径转发及重写的实现/bookstore.reviews.ingress.yaml create mode 100644 3.kubernetes/ingress/demo-多路径转发及重写的实现/detail.dpl.yml create mode 100644 3.kubernetes/ingress/demo-多路径转发及重写的实现/detail.svc.yml create mode 100644 3.kubernetes/ingress/demo-多路径转发及重写的实现/readme.md create mode 100644 3.kubernetes/ingress/demo-多路径转发及重写的实现/reviews.dpl.yml create mode 100644 3.kubernetes/ingress/demo-多路径转发及重写的实现/reviews.svc.yml create mode 100644 3.kubernetes/ingress/https_myblog.yml create mode 100644 3.kubernetes/ingress/ingress_cmdb.yml create mode 100644 3.kubernetes/ingress/ingress_myblog.yml create mode 100644 3.kubernetes/ingress/mandatory.yml create mode 100644 3.kubernetes/ingress/tls.crt create mode 100644 3.kubernetes/ingress/tls.key create mode 100644 3.kubernetes/jenkins/add_domian.yaml create mode 100644 3.kubernetes/jenkins/jenkins-all.yaml create mode 100644 3.kubernetes/jenkins/jenkins-pvc.yaml create mode 100644 3.kubernetes/jenkins/pipline/pipline-deploy.Jenkinsfile create mode 100644 3.kubernetes/jenkins/pipline/pipline-image.Jenkinsfile create mode 100644 3.kubernetes/jenkins/pipline/pod.Jenkinsfile create mode 100644 3.kubernetes/kubernetes-dashboard/dashboard-admin.yml create mode 100644 3.kubernetes/kubernetes-dashboard/recommended.yaml create mode 100644 3.kubernetes/kubesphere/v3.2.1/cluster-configuration.yaml create mode 100644 3.kubernetes/kubesphere/v3.2.1/kubesphere-installer.yaml create mode 100644 3.kubernetes/kubesphere/v3.2.1/svc.yml create mode 100644 3.kubernetes/limitRange/cpu-limit.yml create mode 100644 3.kubernetes/limitRange/mem-limit.yml create mode 100644 3.kubernetes/one-pod/pod-with-volume.yml create mode 100644 3.kubernetes/one-pod/sshd-pod.yml create mode 100644 3.kubernetes/pod-lifecycle/pod-lifecycle.yml create mode 100644 3.kubernetes/rbac/demo-admin-rbac.yaml create mode 100644 3.kubernetes/rbac/demo-limit.yml create mode 100644 3.kubernetes/secret/cmdb-secret.yml create mode 100644 3.kubernetes/secret/secret.yml create mode 100644 3.kubernetes/services/svc-cmdb.yml create mode 100644 3.kubernetes/services/svc-myblog.yml create mode 100644 3.kubernetes/storage/nfs-pv.yml create mode 100644 3.kubernetes/storage/nfs-pvc.yml create mode 100644 3.kubernetes/storage/nginx-nfs.yml create mode 100644 3.kubernetes/storageClass/nfs-nginx-nginx-pvc.yml create mode 100644 3.kubernetes/storageClass/nfs-nginx-pvc-statefulset.yml create mode 100644 3.kubernetes/storageClass/nfs-provisioner.yml create mode 100644 3.kubernetes/storageClass/nfs-pvc-1g-test.yml create mode 100644 3.kubernetes/two-pod/cmdb.yml create mode 100644 3.kubernetes/two-pod/myblog.yml create mode 100644 3.kubernetes/two-pod/mysql.yml create mode 100644 3.kubernetes/two-pod/test.md create mode 100644 4.monitor/consul.yml create mode 100644 4.monitor/grafana/granfna.yml create mode 100644 4.monitor/grafana/readme.md create mode 100644 4.monitor/node-exporter.yml create mode 100644 4.monitor/prometheus/1.rbac.yml create mode 100644 4.monitor/prometheus/2.configmap.yml create mode 100644 4.monitor/prometheus/3.deploy.yml create mode 100644 4.monitor/prometheus/consul.py create mode 100644 4.monitor/prometheus/consul_delete_all.py create mode 100644 4.monitor/prometheus/consul_failed_clean.py create mode 100644 4.monitor/pvc.yml create mode 100644 4.monitor/readme.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 deploy-kubernetes-helm/README.md create mode 100644 deploy-kubernetes-helm/helm仓库.md create mode 100644 deploy-kubernetes-helm/常用命令.md create mode 100644 deploy/jenkins-ci.md create mode 100644 docker-compose-all-one/README.md create mode 100644 docker-compose-all-one/config/elasticsearch/elasticsearch.yml create mode 100644 docker-compose-all-one/config/history/old.yml create mode 100644 docker-compose-all-one/config/mysql/my.cnf create mode 100644 docker-compose-all-one/config/mysql57/my.cnf create mode 100644 docker-compose-all-one/config/redis/redis.conf create mode 100644 docker-compose-all-one/config/rocketmq/broker.conf create mode 100644 docker-compose-all-one/docker-compose.yml create mode 100644 docker-compose-all-one/docs/es.md create mode 100644 docker-compose-all-one/docs/grafana.md create mode 100644 docker-compose-all-one/docs/kafka.md create mode 100644 docker-compose-all-one/services/docker-compose-bak.yml create mode 100644 docker-compose-all-one/services/elasticsearch-head.yml create mode 100644 docker-compose-all-one/services/elasticsearch.yml create mode 100644 docker-compose-all-one/services/grafana.yml create mode 100644 docker-compose-all-one/services/kafka-manager.yml create mode 100644 docker-compose-all-one/services/kafka.yml create mode 100644 docker-compose-all-one/services/mysql.yml create mode 100644 docker-compose-all-one/services/nacos.yml create mode 100644 docker-compose-all-one/services/openldap.yml create mode 100644 docker-compose-all-one/services/redis.yml create mode 100644 docker-compose-all-one/services/zookeeper.yml create mode 100644 docker-compose-yaml/base.sh create mode 100644 docker-compose-yaml/readme.md create mode 100644 docker-compose-yaml/zabbix-docker.sh create mode 100644 docker-compose-yaml/zabbix.sh create mode 100644 docker-compose-yaml/zabbix.yml create mode 100644 docker-compose-yaml/zabbix/mysql.zabbix.yml create mode 100644 docker-compose-yaml/zabbix/pg.zabbix.yml create mode 100644 docker-compose-yaml/zabbix/readme.md create mode 100644 kubernets_api/consul-node.py create mode 100644 kubernets_api/consul-up.py create mode 100644 kubernets_api/consul.py create mode 100644 kubernets_api/login.py create mode 100644 kubernets_api/pod.py create mode 100644 other/.DS_Store create mode 100644 other/configmap_and_secret.md create mode 100644 other/demo-cmdb部署.md create mode 100644 other/demo-nginx部署.md create mode 100644 other/demo-存储.md create mode 100644 other/deployment.md create mode 100644 other/image/jenkins1.png create mode 100644 other/image/jenkins2.png create mode 100644 other/image/jenkins3.png create mode 100644 other/ingress-nginx.md create mode 100644 other/jenkins-部署.md create mode 100644 other/k8s常用命令汇总.md create mode 100644 other/kubernetes-dashboard.md create mode 100644 other/调度md create mode 100644 other/面试题...md diff --git a/1.docs/1.1 docker.md b/1.docs/1.1 docker.md new file mode 100644 index 0000000..d866905 --- /dev/null +++ b/1.docs/1.1 docker.md @@ -0,0 +1,73 @@ + + +# docker 部署 + +部署 + +- 在线 shell 安装 + +```bash +curl -sSL https://get.docker.com/ | sh +``` + +- yum + +```bash +## 清理老的版本 +sudo yum remove docker \ + docker-client \ + docker-client-latest \ + docker-common \ + docker-latest \ + docker-latest-logrotate \ + docker-logrotate \ + docker-engine + +## yum在线安装 +sudo yum-config-manager \ + --add-repo \ + https://download.docker.com/linux/centos/docker-ce.repo + # 添加Docker软件包源 + +sudo yum install docker-ce docker-ce-cli containerd.io + # 安装Docker CE + +systemctl start docker && systemctl enable docker +# 启动服务 +``` + +## docker 配置 + +```bash + +cat > /etc/docker/daemon.json << EOF +{ + "exec-opts": ["native.cgroupdriver=systemd"], + "graph": "/var/lib", + "log-driver": "json-file", + "log-opts": { + "max-size": "100m" + }, + "registry-mirrors": [ + "https://1lcdq5an.mirror.aliyuncs.com", + "https://mirror.ccs.tencentyun.com", + "http://hub-mirror.c.163.com" + ] +} +EOF + + + +# log日志保存大小设置为100M +# "graph": "/data/docker";指定docker默认数据路径 +# "exec-opts": ["native.cgroupdriver=systemd"], +## 调整docker Cgroup Driver为systemd和日志格式设定 + +systemctl restart docker # 重启docker + +``` diff --git a/1.docs/1.2 docker-compose.md b/1.docs/1.2 docker-compose.md new file mode 100644 index 0000000..81a7aa3 --- /dev/null +++ b/1.docs/1.2 docker-compose.md @@ -0,0 +1,19 @@ + + +# 二进制 docker-compose + +下载地址: https://github.com/docker/compose/releases + +```bash +# wget -O /usr/local/sbin/docker-compose https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) + +curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/sbin/docker-compose + +chmod +x /usr/local/sbin/docker-compose +docker-compose version # 查看docker-compose版本 +``` diff --git a/1.docs/2.1 harbor.md b/1.docs/2.1 harbor.md new file mode 100644 index 0000000..2d81d18 --- /dev/null +++ b/1.docs/2.1 harbor.md @@ -0,0 +1,49 @@ + + +# harbor 镜像仓库 + +```bash +wget -c https://github.com/goharbor/harbor/releases/download/v2.3.4/harbor-offline-installer-v2.3.4.tgz + +tar zxvf harbor-offline-installer*.tgz +cd harbor +cp harbor.yml.tmpl harbor.yml +grep hostname harbor.yml +# 修改 hostname地址,http,https配置 +./install.sh # 执行安装脚本 + +## compose启动 +docker-compose down +docker-compose up -d + + +## 登录私有仓库 dockerhub +docker login +## 登录私有仓库 +docker login harbor.opsbase.cn + +``` + +## 更新证书 +```bash +# 如果证书 +cd harbor/ +docker cp harbor.enterx.cc.key nginx:/etc/cert/server.key +docker cp harbor.enterx.cc_bundle.pem nginx:/etc/cert/server.crt +docker-compose down && docker-compose up -d +``` + +## tag 使用 + +```bash +docker tag myblog:v1 harbor.opsbase.cn/public/myblog:v1 +docker push harbor.opsbase.cn/public/myblog:v1 +# 打tag 推送到harbor +docker pull harbor.opsbase.cn/public/myblog:v1 +# 拉取镜像到本地 +``` diff --git a/1.docs/kubernets-install.sh b/1.docs/kubernets-install.sh new file mode 100644 index 0000000..eecc70c --- /dev/null +++ b/1.docs/kubernets-install.sh @@ -0,0 +1,348 @@ +#!/bin/bash + +# bash kubernets-install.sh master +# bash kubernets-install.sh node + +# 指定 Kubernetes 版本; 参考https://github.com/kubernetes/kubernetes/releases +custom_version="1.27.4" + +read -p "是否修改Kubernetes版本? 当前为: $custom_version (y/n) " custom_version + +# 根据用户选择设置kubernetes_version变量 +if [ "$custom_version" == "y" ]; then + read -p "请输入自定义的Kubernetes版本: " custom_kubernetes_version + kubernetes_version="$custom_kubernetes_version" +fi + +# 输出选择的Kubernetes版本 +echo "选择的Kubernetes版本是: $kubernetes_version" + +# 判断传递的参数,如果没有传递或传递的是错误参数,则默认安装master节点 +node_type=${1:-"master"} + +# 脚本用途说明 +cat </dev/null 2>&1; then + echo "已检测到已安装的 Kubernetes。" + read -p "是否卸载已存在的 Kubernetes?(y/n): " uninstall_choice + if [[ $uninstall_choice = "y" || $uninstall_choice = "Y" ]]; then + uninstall_kubernetes + else + echo "已取消安装。" + exit 0 + fi + fi +} +# 卸载 Kubernetes +uninstall_kubernetes() { + echo "正在卸载 Kubernetes..." + + case $os in + ubuntu) + uninstall_kubernetes_ubuntu + ;; + centos) + uninstall_kubernetes_centos + ;; + amazon_linux) + uninstall_kubernetes_centos + ;; + *) + echo "不支持的操作系统。" + exit 1 + ;; + esac + + echo "Kubernetes 已成功卸载。" +} + +# 获取操作系统信息 +get_os_info() { + if [ -f /etc/os-release ]; then + . /etc/os-release + if [[ $ID = "ubuntu" ]]; then + os="ubuntu" + elif [[ $ID = "centos" ]]; then + os="centos" + elif [[ $ID = "amzn" ]]; then + os="amazon_linux" + fi + elif [ -f /etc/redhat-release ]; then + if grep -q "CentOS Linux release 7" /etc/redhat-release; then + os="centos" + fi + fi +} + +# 卸载 Kubernetes(Ubuntu) +uninstall_kubernetes_ubuntu() { + echo "正在卸载 Kubernetes..." + if command -v kubeadm &>/dev/null; then + kubeadm reset -f + else + echo "kubeadm 未找到,无法执行重置操作。请手动重置 Kubernetes。" + fi + if command -v kubectl &>/dev/null; then + kubectl delete -f $flannel + kubectl delete -f $calico + apt remove -y kubeadm kubelet kubectl containerd + rm -rf /etc/kubernetes /var/lib/etcd /var/lib/kubelet + else + echo "kubectl 未找到,无法执行删除操作。请手动删除相关资源。" + fi +} + +# 卸载 Kubernetes(CentOS) +uninstall_kubernetes_centos() { + echo "正在卸载 Kubernetes..." + if command -v kubectl &>/dev/null; then + kubectl delete -f $flannel + kubectl delete -f $calico + yum --debuglevel=1 remove -y kubeadm kubelet kubectl containerd bash-completion + yum autoremove -y + rm -rf /etc/kubernetes /var/lib/etcd /var/lib/kubelet + + else + echo "kubectl 未找到,无法执行删除操作。请手动删除相关资源。" + fi + +} + +# 关闭并禁用防火墙(Ubuntu、CentOS) +disable_firewall() { + echo "正在关闭并禁用防火墙..." + if [[ $os = "ubuntu" ]]; then + ufw disable + elif [[ $os = "centos" || $os = "amazon_linux" ]]; then + systemctl stop firewalld + systemctl disable firewalld + # 清空iptables策略 + iptables -F + iptables -X + iptables -Z + iptables -F -t nat + iptables -X -t nat + iptables -Z -t nat + iptables -P INPUT ACCEPT + if [ -s /etc/selinux/config ]; then + setenforce 0 + sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config + fi + fi +} + +# 关闭并禁用 Swap +disable_swap() { + echo "正在关闭并禁用 Swap..." + swapoff -a + sed -i '/swap/d' /etc/fstab +} + +# 优化内核参数 +optimize_kernel() { + echo "正在优化内核参数..." + sysctl_file="/etc/sysctl.d/kubernetes.conf" + # echo "net.bridge.bridge-nf-call-ip6tables = 1" >$sysctl_file + # echo "net.bridge.bridge-nf-call-iptables = 1" >>$sysctl_file + echo "net.ipv4.ip_forward=1" >>$sysctl_file + echo "vm.max_map_count=262144" >>$sysctl_file + sysctl -p $sysctl_file +} + +# 禁用透明大页 +disable_transparent_hugepage() { + echo "禁用透明大页..." + thp_file="/etc/systemd/system/disable-thp.service" + echo "[Unit]" >$thp_file + echo "Description=Disable Transparent Huge Pages (THP)" >>$thp_file + echo "DefaultDependencies=no" >>$thp_file + echo "After=local-fs.target" >>$thp_file + echo "Before=apparmor.service" >>$thp_file + echo "" >>$thp_file + echo "[Service]" >>$thp_file + echo "Type=oneshot" >>$thp_file + echo "ExecStart=/bin/sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/enabled && echo never > /sys/kernel/mm/transparent_hugepage/defrag'" >>$thp_file + echo "" >>$thp_file + echo "[Install]" >>$thp_file + echo "WantedBy=multi-user.target" >>$thp_file + chmod 664 $thp_file + systemctl daemon-reload + systemctl enable disable-thp + systemctl start disable-thp +} + +# 安装 kubeadm、kubelet 和 kubectl +install_kubernetes() { + echo "正在安装 kubeadm、kubelet 和 kubectl(版本:$kubernetes_version)..." + + if [[ $os = "ubuntu" ]]; then + apt update + apt install -y apt-transport-https ca-certificates curl bridge-utils + modprobe br_netfilter # 加载所需的内核模块 + curl -fsSL $apt_repository/doc/apt-key.gpg | apt-key add - + echo "deb $apt_repository kubernetes-xenial main" | tee /etc/apt/sources.list.d/kubernetes.list + + apt update + apt install -y kubeadm=$kubernetes_version-00 kubelet=$kubernetes_version-00 kubectl=$kubernetes_version-00 + elif [[ $os = "centos" || $os = "amazon_linux" ]]; then + cat </etc/yum.repos.d/kubernetes.repo +[kubernetes] +name=Kubernetes +baseurl=${yum_repository}/yum/repos/kubernetes-el7-x86_64/ +enabled=1 +gpgcheck=0 +repo_gpgcheck=0 +gpgkey=${yum_repository}/yum/doc/yum-key.gpg +${yum_repository}/yum/doc/rpm-package-key.gpg +EOF + + yum --debuglevel=1 install -y kubeadm-$kubernetes_version kubelet-$kubernetes_version kubectl-$kubernetes_version + systemctl enable kubelet + + echo "添加bash-completion 自动补全" + yum install bash-completion -y + source /usr/share/bash-completion/bash_completion + source <(kubectl completion bash) + echo "source <(kubectl completion bash)" >>~/.bashrc + fi +} + +# 安装 Containerd +install_containerd() { + echo "正在安装 Containerd..." + if [[ $os = "centos" || $os = "amazon_linux" ]]; then + + yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo + yum --debuglevel=1 install -y containerd + elif [[ $os = "ubuntu" ]]; then + apt install -y containerd + fi + mkdir -p /etc/containerd + # 生成默认配置 + containerd config default >/etc/containerd/config.toml + # 配置 systemd cgroup 驱动程序 + sed -i 's#SystemdCgroup = false#SystemdCgroup = true#' /etc/containerd/config.toml + sed -i "s#registry.k8s.io#${docker_image_repository}#" /etc/containerd/config.toml + systemctl restart containerd + systemctl enable containerd +} + +# 执行 kubeadm init 并复制 kubeconfig 文件 +initialize_kubernetes_cluster() { + if command -v kubeadm &>/dev/null; then + kubeadm reset -f + else + echo "kubeadm 未找到,无法执行重置操作。请手动重置 Kubernetes。" + exit 1 + fi + + echo "正在执行 kubeadm init..." + kubeadm init --kubernetes-version=v${kubernetes_version} \ + --image-repository=${docker_image_repository} \ + --service-cidr=10.96.0.0/16 \ + --pod-network-cidr=10.244.0.0/16 \ + -v=5 + + # --kubernetes-version 指定要安装的Kubernetes版本 + # --image-repository=registry.k8s.io 容器镜像仓库默认地址 + # --service-cidr Kubernetes Service的IP地址范围 + # --pod-network-cidr Kubernetes Pod的IP地址范围 + # --control-plane-endpoint=test-k8s-lb.opsbase.cn:6443 控制平面终结点地址,用于在高可用集群中指定负载均衡器的地址。 + echo "已成功执行 kubeadm init。" + # ctr 查看镜像list + ctr image ls + echo "正在复制 kubeconfig 文件..." + mkdir -p $HOME/.kube + \cp /etc/kubernetes/admin.conf $HOME/.kube/config + chown $(id -u):$(id -g) $HOME/.kube/config + echo "kubeconfig 文件已复制到 $HOME/.kube/config。" +} + +# 安装网络组件(Flannel) +install_network_plugin_flannel() { + echo "正在安装 Flannel 网络组件..." + echo $flannel + kubectl apply -f $flannel +} + +# 安装网络组件(Calico) +install_network_plugin_calico() { + echo "正在安装 Calico 网络组件..." + kubectl create -f $calico +} + +# 主函数 +main() { + select_country + get_os_info + check_root_user + check_kubernetes_installed + disable_firewall + disable_swap + disable_transparent_hugepage + install_kubernetes + install_containerd + optimize_kernel + if [[ "$node_type" = "master" ]]; then + initialize_kubernetes_cluster + install_network_plugin_flannel + # 如果想使用 Calico 网络组件,注释掉上面的 "flannel" 函数,然后取消"calico" 行的注释 + # install_network_plugin_calico + else + echo "slave节点,跳过集群初始化操作。" + fi + +} + +# 主函数 +main diff --git a/2.docker/confluence.dockerfile b/2.docker/confluence.dockerfile new file mode 100644 index 0000000..d0cbb1b --- /dev/null +++ b/2.docker/confluence.dockerfile @@ -0,0 +1,9 @@ +FROM cptactionhank/atlassian-confluence:7.4.0 + +USER root + +# 将代理破解包加入容器 +COPY "atlassian-agent-v1.2.3/atlassian-agent.jar" /opt/atlassian/confluence/ + +# 设置启动加载代理包 +RUN echo 'export CATALINA_OPTS="-javaagent:/opt/atlassian/confluence/atlassian-agent.jar ${CATALINA_OPTS}"' >> /opt/atlassian/confluence/bin/setenv.sh \ No newline at end of file diff --git a/2.docker/confluence.sh b/2.docker/confluence.sh new file mode 100644 index 0000000..29f0bac --- /dev/null +++ b/2.docker/confluence.sh @@ -0,0 +1,20 @@ +docker run -d --name confluence +### +# @Author: Logan.Li +# @Gitee: https://gitee.com/attacker +# @email: admin@attacker.club +# @Date: 2022-12-10 22:27:24 +# @LastEditTime: 2023-09-28 13:34:20 +# @Description: +### +--restart always \ + -p 8090:8090 \ + -e TZ="Asia/Shanghai" \ + -v /home/confluence:/var/atlassian/confluence \ + confluence:v1 + +docker cp mysql-connector-java-5.1.48-bin.jar confluence:/opt/atlassian/confluence/lib +# cp数据库驱动 + +docker exec -it confluence java -jar /opt/atlassian/confluence/atlassian-agent.jar -p conf -m pp@pangshare.com -n pangshare -o https://www.pangshare.com -s B37H-XJIY-BCSR-FZQQ +# diff --git a/2.docker/django_python.dockerfile b/2.docker/django_python.dockerfile new file mode 100644 index 0000000..7e22d12 --- /dev/null +++ b/2.docker/django_python.dockerfile @@ -0,0 +1,17 @@ +FROM python:3.8-alpine + +WORKDIR /home +COPY . /home + +RUN pip install -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com -r requirements.txt +RUN rm -rf /home/env + +# RUN python manage.py makemigrations && python manage.py migrate +# CMD [ "python", "./manage.py", "runserver", "0.0.0.0:8000"] +RUN chmod +x run.sh +EXPOSE 8000 +CMD ["/bin/sh","run.sh"] +# 容器启动时默认执行的命令 + +# docker build -t lghost/bind9:latest . # build images +# docker push lghost/bind9:latest # 推送到dockerhub diff --git a/2.docker/docker-install b/2.docker/docker-install new file mode 100644 index 0000000..fa908c6 --- /dev/null +++ b/2.docker/docker-install @@ -0,0 +1,102 @@ +#!/bin/bash +# + +# 定义日志文件路径 +LOG_FILE="/var/log/docker_install.log" + +# 定义日志记录函数 +function logger() { + local log_level="$1" + local message="$2" + local color_code="" + + case "$log_level" in + "error" | "red") + color_code="\e[1;31m" + ;; + "warning" | "yellow") + color_code="\e[1;33m" + ;; + "success" | "green") + color_code="\e[1;32m" + ;; + "info" | "blue") + color_code="\e[1;34m" + ;; + esac + + echo -e "${color_code}${message}\e[0m" + echo "$message" >> "$LOG_FILE" +} + +# 判断是否 root 用户 +if [ $(id -u) -ne 0 ]; then + logger "error" "########## 错误:此脚本必须以 root 身份运行! ##########" + exit 1 +fi + +# 环境检查 +if which getenforce && [ $(getenforce) == "Enforcing" ]; then + logger "info" "信息:关闭 SELINUX" + setenforce 0 + sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config +fi + +# 定义安装函数 +function install_docker() { + local install_method="$1" + + if [ "$install_method" == "local" ]; then + if [ -f "docker-24.0.6.tar.gz" ]; then + logger "info" "信息:发现本地压缩包,进行解压安装" + tar zxvf docker-24.0.6.tar.gz + mv docker/docker.service /etc/systemd/system/docker.service + cp docker/* /usr/bin + else + logger "warning" "警告:未找到本地压缩包,无法进行本地安装" + return 1 + fi + elif [ "$install_method" == "curl" ]; then + logger "info" "信息:尝试通过 curl 安装 Docker" + curl -fsSL https://get.docker.com | sh + elif [ "$install_method" == "yum" ]; then + logger "warning" "警告:尝试通过 Yum 安装 Docker" + sudo yum remove docker \ + docker-client \ + docker-client-latest \ + docker-common \ + docker-latest \ + docker-latest-logrotate \ + docker-logrotate \ + docker-engine -y + + sudo yum-config-manager \ + --add-repo \ + https://download.docker.com/linux/centos/docker-ce.repo + + sudo yum install docker-ce -y + else + logger "error" "错误:无效的安装方法" + return 1 + fi + + systemctl daemon-reload + systemctl enable docker + systemctl start docker + logger "success" "成功:安装 Docker 并启动服务($install_method 方式)" +} + +# 尝试本地安装 +if install_docker "local"; then + exit 0 +fi + +# 尝试 curl 安装 +if install_docker "curl"; then + exit 0 +fi + +# 尝试 yum 安装 +install_docker "yum" + +logger "info" "======================= 安装完成 =======================" \ No newline at end of file diff --git a/2.docker/docker-tools.sh b/2.docker/docker-tools.sh new file mode 100644 index 0000000..d21beb8 --- /dev/null +++ b/2.docker/docker-tools.sh @@ -0,0 +1,103 @@ +#!/bin/bash + +# Docker 镜像与容器操作脚本 +# 导出 Docker 镜像至指定路径 +export_image() { + # 参数检查 + if [ -z "$1" ] || [ -z "$2" ]; then + echo "用法: 导出镜像 <镜像名称> <导出路径>" + return 1 + fi + + local image_name="$1" + local export_path="$2" + + echo "正在导出镜像 '$image_name' 至 '$export_path'..." + docker save -o "$export_path" "$image_name" + if [ $? -eq 0 ]; then + echo "镜像导出成功。" + else + echo "镜像导出失败。" + return 1 + fi +} + +# 将运行中的Docker容器导出为新的镜像 +export_container_as_image() { + # 参数检查 + if [ -z "$1" ] || [ -z "$2" ]; then + echo "用法: 导出容器为镜像 <容器名称或ID> <新镜像名称>" + return 1 + fi + + local container_name_or_id="$1" + local new_image_name="$2" + + echo "正在将运行中的容器 '$container_name_or_id' 导出为镜像 '$new_image_name'..." + docker commit "$container_name_or_id" "$new_image_name" + if [ $? -eq 0 ]; then + echo "容器已成功导出为镜像。" + else + echo "容器导出为镜像失败。" + return 1 + fi +} + +# 导入 Docker 镜像文件 +import_image() { + # 参数检查 + if [ -z "$1" ]; then + echo "用法: 导入镜像 <导入文件路径>" + return 1 + fi + + local import_path="$1" + + if [ ! -f "$import_path" ]; then + echo "文件 '$import_path' 不存在。" + return 1 + fi + + echo "正在从 '$import_path' 导入 Docker 镜像..." + docker load -i "$import_path" + if [ $? -eq 0 ]; then + echo "镜像导入成功。" + else + echo "镜像导入失败。" + return 1 + fi +} + +# 打印帮助信息 +print_help() { + echo -e "\n操作指南:\n" + echo "+---------------------------+---------------------------------------------------------+" + echo "| 功能 | 命令格式 |" + echo "+---------------------------+---------------------------------------------------------+" + echo "| export_image | ./docker-tools.sh 导出镜像 <镜像名称> <导出路径> |" + echo "| export_container | ./docker-tools.sh 导出容器为镜像 <容器名或ID> <新镜像名>|" + echo "| import_image | ./docker-tools.sh 导入镜像 <导入文件路径> |" + echo "+---------------------------+---------------------------------------------------------+" + echo "| 注: | 使用前请确保已赋予权限,如 'chmod +x docker-tools.sh' |" + echo "+---------------------------+---------------------------------------------------------+" +} + + +# 主程序:解析命令行参数,执行对应功能或打印帮助 +case "$1" in + export_image) + shift + export_image "$@" + ;; + import_image) + shift + import_image "$@" + ;; + export_container_as_image) + shift + export_container "$@" + ;; + *) + print_help + ;; +esac diff --git a/2.docker/etl.sh b/2.docker/etl.sh new file mode 100644 index 0000000..939787a --- /dev/null +++ b/2.docker/etl.sh @@ -0,0 +1,57 @@ +#!/bin/bash +### +# @Author: Logan.Li +# @Gitee: https://gitee.com/attacker +# @email: admin@attacker.club +# @Date: 2023-10-19 01:52:35 + # @LastEditTime: 2023-10-19 10:11:16 +# @Description: +### + +DOLPHINSCHEDULER_VERSION=3.2.0 +# Initialize the database, make sure database already exists +docker run -d --name dolphinscheduler-tools \ + -e DATABASE="postgresql" \ + -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/" \ + -e SPRING_DATASOURCE_USERNAME=root \ + -e SPRING_DATASOURCE_PASSWORD="Wu20@250" \ + -e SPRING_JACKSON_TIME_ZONE="UTC" \ + --net host \ + apache/dolphinscheduler-tools:"${DOLPHINSCHEDULER_VERSION}" tools/bin/upgrade-schema.sh +# Starting DolphinScheduler service +docker run -d --name dolphinscheduler-master \ + -e DATABASE="postgresql" \ + -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/dolphinscheduler" \ + -e SPRING_DATASOURCE_USERNAME=root \ + -e SPRING_DATASOURCE_PASSWORD="Wu20@250" \ + -e SPRING_JACKSON_TIME_ZONE="UTC" \ + -e REGISTRY_ZOOKEEPER_CONNECT_STRING="localhost:2181" \ + --net host \ + -d apache/dolphinscheduler-master:"${DOLPHINSCHEDULER_VERSION}" +docker run -d --name dolphinscheduler-worker \ + -e DATABASE="postgresql" \ + -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/dolphinscheduler" \ + -e SPRING_DATASOURCE_USERNAME=root \ + -e SPRING_DATASOURCE_PASSWORD="Wu20@250" \ + -e SPRING_JACKSON_TIME_ZONE="UTC" \ + -e REGISTRY_ZOOKEEPER_CONNECT_STRING="localhost:2181" \ + --net host \ + -d apache/dolphinscheduler-worker:"${DOLPHINSCHEDULER_VERSION}" +docker run -d --name dolphinscheduler-api \ + -e DATABASE="postgresql" \ + -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/dolphinscheduler" \ + -e SPRING_DATASOURCE_USERNAME=root \ + -e SPRING_DATASOURCE_PASSWORD="Wu20@250" \ + -e SPRING_JACKSON_TIME_ZONE="UTC" \ + -e REGISTRY_ZOOKEEPER_CONNECT_STRING="localhost:2181" \ + --net host \ + -d apache/dolphinscheduler-api:"${DOLPHINSCHEDULER_VERSION}" +docker run -d --name dolphinscheduler-alert-server \ + -e DATABASE="postgresql" \ + -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/dolphinscheduler" \ + -e SPRING_DATASOURCE_USERNAME=root \ + -e SPRING_DATASOURCE_PASSWORD="Wu20@250" \ + -e SPRING_JACKSON_TIME_ZONE="UTC" \ + -e REGISTRY_ZOOKEEPER_CONNECT_STRING="localhost:2181" \ + --net host \ + -d apache/dolphinscheduler-alert-server:"${DOLPHINSCHEDULER_VERSION}" diff --git a/2.docker/frp.sh b/2.docker/frp.sh new file mode 100644 index 0000000..0ddb345 --- /dev/null +++ b/2.docker/frp.sh @@ -0,0 +1,6 @@ + +docker run --restart=always --network host \ +-d -v /etc/frps.ini:/etc/frp/frps.ini --name frps lghost/frps:0.48 + +docker run --restart=always --network host \ +-d -v /etc/frpc.ini:/etc/frp/frpc.ini --name frpc lghost/frpc:0.48 \ No newline at end of file diff --git a/2.docker/frpc.dockerfile b/2.docker/frpc.dockerfile new file mode 100644 index 0000000..50d9f27 --- /dev/null +++ b/2.docker/frpc.dockerfile @@ -0,0 +1,15 @@ +FROM alpine:latest + +ENV FRP_VERSION 0.48.0 + +RUN mkdir -p /etc/frp \ + && wget --no-check-certificate -c https://github.com/fatedier/frp/releases/download/v${FRP_VERSION}/frp_${FRP_VERSION}_linux_amd64.tar.gz \ + && tar zxvf frp_${FRP_VERSION}_linux_amd64.tar.gz \ + && cp frp_${FRP_VERSION}_linux_amd64/frpc /usr/bin/ \ + && cp frp_${FRP_VERSION}_linux_amd64/frpc.ini /etc/frp \ + && rm -rf frp_* + +ENTRYPOINT /usr/bin/frpc -c /etc/frp/frpc.ini + +# docker build -t lghost/frpc . +# docker run --restart=always --network host -d -v /etc/frpc.ini:/etc/frp/frpc.ini --name frpc lghost/frpc:0.48 \ No newline at end of file diff --git a/2.docker/frpc.ini b/2.docker/frpc.ini new file mode 100644 index 0000000..d51cda2 --- /dev/null +++ b/2.docker/frpc.ini @@ -0,0 +1,38 @@ +# frpc.ini (FRPC configuration) +[common] +server_addr = 21.136.xxx.xxx +server_port = 7000 +token = ************ + +[open] +type = http +local_ip = 192.168.0.254 +local_port = 80 +remote_port = 80 +custom_domains = open.opsbase.cn + +[test] +type = http +local_ip = 192.168.0.254 +local_port = 80 +remote_port = 80 +custom_domains = test.opsbase.cn + +[tcp4430] +type = tcp +local_ip = 10.10.10.209 +local_port = 4430 +remote_port = 4430 + + +[ssh] +type = tcp +local_ip = 192.168.0.254 +local_port = 22 +remote_port = 60022 + +[RDP] +type = tcp +local_ip = 192.168.0.234 +local_port = 3389 +remote_port = 63389 \ No newline at end of file diff --git a/2.docker/frps.dockerfile b/2.docker/frps.dockerfile new file mode 100644 index 0000000..f5c757a --- /dev/null +++ b/2.docker/frps.dockerfile @@ -0,0 +1,15 @@ +FROM alpine:latest + +ENV FRP_VERSION 0.48.0 + +RUN mkdir -p /etc/frp \ + && wget --no-check-certificate -c https://github.com/fatedier/frp/releases/download/v${FRP_VERSION}/frp_${FRP_VERSION}_linux_amd64.tar.gz \ + && tar zxvf frp_${FRP_VERSION}_linux_amd64.tar.gz \ + && cp frp_${FRP_VERSION}_linux_amd64/frps /usr/bin/ \ + && cp frp_${FRP_VERSION}_linux_amd64/frps.ini /etc/frp \ + && rm -rf frp_* + +ENTRYPOINT /usr/bin/frps -c /etc/frp/frps.ini + +# docker build -t lghost/frps -f frps.dockerfile . +# docker run --restart=always --network host -d -v /etc/frps.ini:/etc/frp/frps.ini --name frps lghost/frps:0.48 \ No newline at end of file diff --git a/2.docker/frps.ini b/2.docker/frps.ini new file mode 100644 index 0000000..f034bc4 --- /dev/null +++ b/2.docker/frps.ini @@ -0,0 +1,12 @@ +# frps.ini (FRPS configuration) +[common] +bind_addr=0.0.0.0 +bind_port = 7000 +token=************ +dashboard_port = 7500 +dashboard_user = root +dashboard_pwd = password1 +vhost_http_port = 80 +vhost_https_port = 443 +tcp_mux = ture +privilege_mode = ture \ No newline at end of file diff --git a/2.docker/gitlab.sh b/2.docker/gitlab.sh new file mode 100644 index 0000000..c64cf73 --- /dev/null +++ b/2.docker/gitlab.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +docker stop gitlab +docker rm gitlab +docker run -d \ + --p 8443:443 --p 8800:80 --p 2222:22 \ + --name gitlab \ + --restart always \ + --privileged=true \ + --volume /data/gitlab/config:/etc/gitlab \ + --volume /data/gitlab/logs:/var/log/gitlab \ + --volume /data/gitlab/data:/var/opt/gitlab \ + gitlab/gitlab-ce + # 指定版本: gitlab/gitlab-ce:12.3.5-ce.0 + +# --privileged=true 让容器获取宿主机root权限 +# /etc/gitlab/gitlab.rb # external_url地址更新 +# gitlab-ctl reconfigure # 载入配置 +# docker exec -it gitlab cat /etc/gitlab/initial_root_password #查看密码 \ No newline at end of file diff --git a/2.docker/gogs.sh b/2.docker/gogs.sh new file mode 100644 index 0000000..4e333ad --- /dev/null +++ b/2.docker/gogs.sh @@ -0,0 +1,15 @@ +#!/bin/bash +### +# @Author: Logan.Li +# @Gitee: https://gitee.com/attacker +# @email: admin@attacker.club +# @Date: 2023-09-29 23:32:45 +# @LastEditTime: 2023-09-29 23:38:15 +# @Description: +### + +docker run -d \ + --name=gogs \ + --restart=always \ + -p 3022:22 -p 3000:3000 \ + -v /data/docker/gogs:/data gogs/gogs diff --git a/2.docker/holmes_api_tomcat.dockerfile b/2.docker/holmes_api_tomcat.dockerfile new file mode 100644 index 0000000..1af99b8 --- /dev/null +++ b/2.docker/holmes_api_tomcat.dockerfile @@ -0,0 +1,18 @@ +FROM tomcat:8.5.24-jre8 +MAINTAINER Logan "admin@attacker.club" +# 大数据数据质量 后端api服务 + +ENV TZ=Asia/Shanghai +ENV TOMCAT_HOME=/usr/local/tomcat +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +##RUN rm $TOMCAT_HOME/bin/catalina.sh +COPY doc/catalina.sh $TOMCAT_HOME/bin/catalina.sh + +##RUN rm $TOMCAT_HOME/conf/server.xml +COPY doc/server.xml $TOMCAT_HOME/conf/server.xml + +RUN rm -rf $TOMCAT_HOME/webapps/* +COPY holmes-web/target/holmes-web-1.0-SNAPSHOT.war $TOMCAT_HOME/webapps/holmes.war +RUN chmod +x /usr/local/tomcat/bin/catalina.sh +EXPOSE 8080 \ No newline at end of file diff --git a/2.docker/holmes_ui_npm.dockerfile b/2.docker/holmes_ui_npm.dockerfile new file mode 100644 index 0000000..b115cb9 --- /dev/null +++ b/2.docker/holmes_ui_npm.dockerfile @@ -0,0 +1,17 @@ +FROM nginx:1.11.10-alpine +MAINTAINER Logan "admin@attacker.club" +# 前端静态 + +ENV TZ=Asia/Shanghai +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone +RUN mkdir -p /home/jollychic/www + +COPY dist /home/jollychic/www/dist +# npm编译后的静态文件 放nginx镜像里面 + +COPY config/nginx.conf /etc/nginx/conf.d/default.conf +COPY init.sh /home/jollychic/init.sh + +WORKDIR /home/jollychic +EXPOSE 80 +CMD chmod +x init.sh && ./init.sh \ No newline at end of file diff --git a/2.docker/jenkins.sh b/2.docker/jenkins.sh new file mode 100644 index 0000000..2cf6878 --- /dev/null +++ b/2.docker/jenkins.sh @@ -0,0 +1,16 @@ +#!/bin/bash +### + # @Author: admin@attacker.club + # @Date: 2022-12-10 22:27:24 + # @LastEditTime: 2023-02-15 15:42:49 + # @Description: +### + +docker run --name jenkins \ +--restart=always -d \ +-p 8080:8080 \ +-v /home/jenkins/data:/var/jenkins_home \ +jenkins/jenkins:lts + +docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword +# 查看解锁密钥 \ No newline at end of file diff --git a/2.docker/jumpserver.sh b/2.docker/jumpserver.sh new file mode 100644 index 0000000..9de9d3c --- /dev/null +++ b/2.docker/jumpserver.sh @@ -0,0 +1,42 @@ +#!/bin/bash +### + # @Author: admin@attacker.club + # @Date: 2022-12-10 22:27:24 + # @LastEditTime: 2023-02-28 20:48:41 + # @Description: +### + +if [ ! "$SECRET_KEY" ]; then + SECRET_KEY=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 50`; + echo "SECRET_KEY=$SECRET_KEY" >> ~/.bashrc; + echo $SECRET_KEY; +else + echo $SECRET_KEY; +fi +if [ ! "$BOOTSTRAP_TOKEN" ]; then + BOOTSTRAP_TOKEN=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 16`; + echo "BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN" >> ~/.bashrc; + echo $BOOTSTRAP_TOKEN; +else + echo $BOOTSTRAP_TOKEN; +fi + + + + +docker run --name jms_all -d \ + --restart=always \ + -v /opt/jumpserver:/opt/jumpserver/data/media \ + -p 80:80 \ + -p 2222:2222 \ + -e SECRET_KEY=$SECRET_KEY \ + -e BOOTSTRAP_TOKEN=$BOOTSTRAP_TOKEN \ + -e DB_HOST=192.168.xx.xx \ + -e DB_PORT=3306 \ + -e DB_USER=jumpserver \ + -e DB_PASSWORD='xxxxx' \ + -e DB_NAME=jumpserver \ + -e REDIS_HOST=192.168.xx.xx \ + -e REDIS_PORT=6379 \ + -e REDIS_PASSWORD=123456 \ + jumpserver/jms_all \ No newline at end of file diff --git a/2.docker/kuboard.sh b/2.docker/kuboard.sh new file mode 100644 index 0000000..63e56fe --- /dev/null +++ b/2.docker/kuboard.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +# 获取当前 IP 地址 +current_ip=$(hostname -I | awk '{print $1}') + +sudo docker run -d \ + --restart=unless-stopped \ + --name=kuboard \ + -p 82:80/tcp \ + -p 10081:10081/tcp \ + -e KUBOARD_ENDPOINT="http://$current_ip:82" \ + -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \ + -v /data/kuboard-data:/data \ + eipwork/kuboard:v3 \ No newline at end of file diff --git a/2.docker/mysql5.7.sh b/2.docker/mysql5.7.sh new file mode 100644 index 0000000..342dcbf --- /dev/null +++ b/2.docker/mysql5.7.sh @@ -0,0 +1,15 @@ +#!/bin/bash +### + # @Author: admin@attacker.club + # @Date: 2022-09-14 21:38:54 + # @LastEditTime: 2023-03-31 01:37:18 + # @Description: +### + +docker run -p 3306:3306 --name mysql \ +--restart always \ +-v /usr/local/docker/mysql/conf:/etc/mysql \ +-v /usr/local/docker/mysql/logs:/var/log/mysql \ +-v /usr/local/docker/mysql/data:/var/lib/mysql \ +-e MYSQL_ROOT_PASSWORD=123456 \ +-d mysql:5.7 \ No newline at end of file diff --git a/2.docker/mysql8.sh b/2.docker/mysql8.sh new file mode 100644 index 0000000..1aab66a --- /dev/null +++ b/2.docker/mysql8.sh @@ -0,0 +1,21 @@ +#!/bin/bash +### +# @Author: admin@attacker.club +# @Date: 2022-09-14 21:38:54 +# @LastEditTime: 2024-06-30 23:18:01 +# @Description: +### + +dataDir="/opt/docker-data/mysql" +yum remove mariadb* -y # 卸载mariadb +rpm -ivh https://repo.mysql.com/mysql80-community-release-el7.rpm +yum install mysql-community-client -y # 安装mysql客户端 + +password=$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 12) +docker run \ + --restart always \ + -d -p 3306:3306 --name mysql \ + -v $dataDir:/var/lib/mysql \ + -e MYSQL_ROOT_PASSWORD=$password \ + mysql:8 +echo "passwod: $password" >mysql.txt diff --git a/2.docker/openldap.sh b/2.docker/openldap.sh new file mode 100644 index 0000000..803e1d0 --- /dev/null +++ b/2.docker/openldap.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +## openldap服务 +password=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 12` +docker run \ + -d -p 389:389 -p 636:636 \ + --name ldap-service \ + --restart=always \ + --hostname openldap \ + -v /opt/docker-data/slapd/database:/var/lib/ldap \ + --volume /opt/docker-data/slapd/config:/etc/ldap/slapd.d \ + --env LDAP_ORGANISATION="Opsbase" \ + --env LDAP_DOMAIN="opsbase.cn" \ + --env LDAP_BASE_DN="dc=opsbase,dc=cn" \ + --env LDAP_ADMIN_PASSWORD=$password \ + osixia/openldap:latest + +echo "passwod: $password" > openldap.txt +# 默认管理员账号 DN:admin.opsbase.cn diff --git a/2.docker/openwrt.sh b/2.docker/openwrt.sh new file mode 100644 index 0000000..6fa7332 --- /dev/null +++ b/2.docker/openwrt.sh @@ -0,0 +1,25 @@ + +### + # @Author: Logan.Li + # @Gitee: https://gitee.com/attacker + # @email: admin@attacker.club + # @Date: 2023-07-02 00:37:17 + # @LastEditTime: 2023-07-02 00:37:28 + # @Description: + # https://supes.top/docker%E7%89%88openwrt%E6%97%81%E8%B7%AF%E7%94%B1%E5%AE%89%E8%A3%85%E8%AE%BE%E7%BD%AE%E6%95%99%E7%A8%8B/ +### +# 打开网卡混杂模式 +ip link set ens33 promisc on +# 创建网络 +docker network create -d macvlan \ +--subnet=192.168.0.0/24 \ +--gateway=192.168.0.11 -o parent=ens33 openwrt-net +docker network ls && docker network inspect openwrt-net + + +# 下载 xxx-rootfs.tar.gz, https://supes.top/?target=x86%2F64&id=generic +# 加载镜像,创建并启动容器 +docker run -it -rm --name openwrt--network openwrt-net openwrt:latest --privileged /sbin/init +docker run -it --rm --name openwrt --network openwrt-net --ip 192.168.0.2 openwrt:latest bash + + diff --git a/2.docker/php.sh b/2.docker/php.sh new file mode 100644 index 0000000..e69de29 diff --git a/2.docker/phpldapadmin.sh b/2.docker/phpldapadmin.sh new file mode 100644 index 0000000..93cee7b --- /dev/null +++ b/2.docker/phpldapadmin.sh @@ -0,0 +1,16 @@ +## https://35.xx.xx.xx:6443/ +### + # @Author: admin@attacker.club + # @Date: 2023-02-22 19:14:48 + # @LastEditTime: 2023-02-22 19:16:41 + # @Description: + +## 在浏览器输入 https://内网IP:6443 ,按下图所示步骤登录 phpLDAPadmin +## Login DN: cn=admin,dc=example,dc=org 默认管理员用户 +## Password: admin 管理员密码 +### +docker run -p 6443:443 \ + --name ldapadmin \ + --link ldap-service:ldap \ + --env PHPLDAPADMIN_LDAP_HOSTS=ldap \ + --detach osixia/phpldapadmin:0.9.0 \ No newline at end of file diff --git a/2.docker/poste-mail.sh b/2.docker/poste-mail.sh new file mode 100644 index 0000000..789df0b --- /dev/null +++ b/2.docker/poste-mail.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +docker stop mail +docker rm mail + +docker run --name "mail" \ +-p 25:25 -p 8888:80 \ +-e "HTTPS=OFF" \ +-e "DISABLE_CLAMAV=TRUE" \ +-p 110:110 -p 143:143 -p 465:465 \ +-p 587:587 -p 993:993 -p 995:995 \ +-v /etc/localtime:/etc/localtime:ro -v \ +/home/data:/data \ +-h "mail.xxx.com" \ +--restart=always -d -t analogic/poste.io + + +iptables -D INPUT -p tcp -m multiport --dport 25,110,143,465,993,587,995,1022,55557 -j ACCEPT +iptables -I INPUT -p tcp -m multiport --dport 25,110,143,465,993,587,995,1022,55557 -j ACCEPT +iptables-save \ No newline at end of file diff --git a/2.docker/python.Dockerfile-alpine b/2.docker/python.Dockerfile-alpine new file mode 100644 index 0000000..232aaa2 --- /dev/null +++ b/2.docker/python.Dockerfile-alpine @@ -0,0 +1,41 @@ +FROM python:3.9-alpine + +MAINTAINER Logan +WORKDIR /opt/app +COPY requirements.txt /opt/app + +## 国内加速源 +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories +## 工具包 +RUN apk --no-cache add curl vim busybox-extras +## ldap依赖 +RUN apk --no-cache add gcc \ +libldap \ +libc-dev \ +openldap-dev +# python3-dev +## Pillow图片库依赖 +RUN apk --no-cache add libjpeg jpeg-dev musl-dev zlib-dev libffi-dev +# python3-dev +RUN pip --no-cache-dir install -i https://mirrors.aliyun.com/pypi/simple -r requirements.txt +COPY . /opt/app + +## 清理数据 +RUN apk del \ + gcc \ + libc-dev \ + openldap-dev +# RUN apk del libjpeg jpeg-dev musl-dev zlib-dev libffi-dev +RUN rm -rf /tmp/* /opt/app/env /opt/app/db.sqlite3 /opt/app/logs/* /root/.cache/pip /var/cache/apk/* + +EXPOSE 8000 +CMD ["/bin/sh","run.sh"] + +## 构建镜像 +# docker build -t lghost/python:3.9 . -f Dockerfile-alpine + +## 简洁启动 +# docker run -d -p8000:8000 --name cmdb lghost/python:3.9 + +## 初始化数据 +# docker exec -it cmdb python init.py diff --git a/2.docker/python.Dockerfile-centos b/2.docker/python.Dockerfile-centos new file mode 100644 index 0000000..390baa8 --- /dev/null +++ b/2.docker/python.Dockerfile-centos @@ -0,0 +1,19 @@ +FROM centos:7 +RUN rm /etc/yum.repos.d/* \ + && curl -s -o ./Centos-7.repo https://mirrors.aliyun.com/repo/Centos-7.repo \ + && curl -s -o ./epel.repo https://mirrors.aliyun.com/repo/epel-7.repo \ + && sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' Centos-7.repo \ + && yum install -y wget openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel python-devel \ +libffi-devel tk-devel + + +RUN wget -c https://www.python.org/ftp/python/3.9.16/Python-3.9.16.tar.xz \ + && tar xf Python*.xz \ + && cd Python-3.9.16 \ + && ./configure prefix=/usr/local/python3 \ + && make -j 2 && make altinstall && ln -s /usr/local/python3/bin/python3.9 /usr/bin/python3 + + + + +# docker build -t lghost/python:3.9 . -f Dockerfile-alpine \ No newline at end of file diff --git a/2.docker/python.Dockerfile-slim b/2.docker/python.Dockerfile-slim new file mode 100644 index 0000000..5c98372 --- /dev/null +++ b/2.docker/python.Dockerfile-slim @@ -0,0 +1,13 @@ +FROM python:3.9.13-slim +ENV PYTHONUNBUFFERED 1 + + +# RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list # 国内源 + +WORKDIR /opt/app + +RUN apt-get update \ + && apt-get install -y net-tools apt-utils \ + libtiff5-dev libjpeg8-dev zlib1g-dev +COPY requirements.txt /opt/app + diff --git a/2.docker/python.Dockerfile-ubuntu b/2.docker/python.Dockerfile-ubuntu new file mode 100644 index 0000000..5afb4a8 --- /dev/null +++ b/2.docker/python.Dockerfile-ubuntu @@ -0,0 +1,19 @@ +FROM ubuntu:22.04 + +MAINTAINER Logan +WORKDIR /opt + +## 依赖包 +RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list \ + && apt update \ + && apt install nload iftop net-tools curl git -y \ + && apt install python3 python3-pip -y + +## 清理数据 +RUN rm -rf /var/lib/apt/lists/* \ +&& apt clean \ +&& apt autoclean + +EXPOSE 8000 + +# docker build -t lghost/python3 . -f Dockerfile-ubuntu-python3 \ No newline at end of file diff --git a/2.docker/redis.sh b/2.docker/redis.sh new file mode 100644 index 0000000..bd2e916 --- /dev/null +++ b/2.docker/redis.sh @@ -0,0 +1,19 @@ +#!/bin/bash +### + # @Author: admin@attacker.club + # @Date: 2022-09-14 21:38:54 + # @LastEditTime: 2022-09-29 16:44:42 + # @Description: +### + +docker run -d \ +--name redis \ +--restart always \ +-p 6379:6379 \ +-v /home/docker-data/redis/data:/data \ +redis:latest --appendonly yes --requirepass opsbase.cn + + + +# appendonly 启动后数据持久化 +# requirepass 指定密码 \ No newline at end of file diff --git a/2.docker/sshd-centos7-dockerfile b/2.docker/sshd-centos7-dockerfile new file mode 100644 index 0000000..692f818 --- /dev/null +++ b/2.docker/sshd-centos7-dockerfile @@ -0,0 +1,17 @@ +FROM centos:7 +RUN cd /etc/yum.repos.d && mkdir bak && mv *.repo bak/ \ + && curl -s -o ./Centos-7.repo https://mirrors.aliyun.com/repo/Centos-7.repo \ + && curl -s -o ./epel.repo https://mirrors.aliyun.com/repo/epel-7.repo \ + && sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' Centos-7.repo \ + && yum clean all && yum makecache \ + && yum install -y wget vim openssh-server net-tools initscripts \ + && /usr/bin/ssh-keygen -A && mkdir /var/run/sshd && echo 'UseDNS no' >> /etc/ssh/sshd_config && sed -i -e '/pam_loginuid.so/d' /etc/pam.d/sshd \ + && yum clean all && rm -rf /var/tmp/* && rm -rf /var/cache/yum/* \ + && echo 'root:opsbase' |chpasswd + +EXPOSE 22 +# CMD ["/usr/sbin/sshd","-D"] +ENTRYPOINT ["/usr/sbin/sshd","-D"] + +# ## 构建镜像 +# docker build -t lghost/centos7-ssh:latest . -f sshd-centos7-dockerfile \ No newline at end of file diff --git a/2.docker/sshd.dockerfile b/2.docker/sshd.dockerfile new file mode 100644 index 0000000..40bce95 --- /dev/null +++ b/2.docker/sshd.dockerfile @@ -0,0 +1,36 @@ +FROM alpine + +MAINTAINER admin@attacker.club.com + +# 替换阿里云的源 +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories + +# 更新源、安装openssh 并修改配置文件和生成key +RUN apk update && \ + apk add --no-cache openssh tzdata && rm -rf /var/cache/apk/* && \ + ssh-keygen -t dsa -P "" -f /etc/ssh/ssh_host_dsa_key && \ + ssh-keygen -t rsa -P "" -f /etc/ssh/ssh_host_rsa_key && \ + ssh-keygen -t ecdsa -P "" -f /etc/ssh/ssh_host_ecdsa_key && \ + ssh-keygen -t ed25519 -P "" -f /etc/ssh/ssh_host_ed25519_key && \ + ssh-keygen -A && \ + sed -i "/PermitRootLogin/c PermitRootLogin yes" /etc/ssh/sshd_config && \ + sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/g' /etc/ssh/sshd_config + +# 自定义配置 +RUN echo "root:123456" | chpasswd && \ + echo > /etc/motd && \ + echo '''PS1="\[\e[37;1m\][\[\e[32;1m\]\u\[\e[37;40m\]@\[\e[34;1m\]\h \[\e[0m\]\t \[\e[35;1m\]\W\[\e[37;1m\]]\[\e[m\]/\\$" ''' >>/etc/profile + +# # 安全配置,禁止网络工具上传和下载 +RUN rm /usr/bin/wget /usr/bin/nc /usr/bin/scp /bin/ping /usr/bin/traceroute* /sbin/apk -f + + +# 开放22端口 +EXPOSE 22 +# 执行ssh启动命令 +CMD ["/usr/sbin/sshd", "-D"] + +## Build +# docker build -t lghost/sshd . -f sshd.dockerfile +## Run +# docker run --restart=unless-stopped -p 2222:22 --name sshd lghost/sshd \ No newline at end of file diff --git a/2.docker/sshd.sh b/2.docker/sshd.sh new file mode 100644 index 0000000..32a3b9f --- /dev/null +++ b/2.docker/sshd.sh @@ -0,0 +1,9 @@ +#!/bin/bash +### + # @author: 以谁为师 + # @site: opsbase.cn + # @Date: 2022-04-02 16:04:05 + # @LastEditTime: 2022-10-14 12:23:01 + # @Description: +### + diff --git a/2.docker/yearning.sh b/2.docker/yearning.sh new file mode 100644 index 0000000..b55dcb0 --- /dev/null +++ b/2.docker/yearning.sh @@ -0,0 +1,15 @@ + +## 安装指南 +https://guide.yearning.io + +## 构建镜像 +docker build -t yearning:lts . -f Dockerfile + + +## 启动 +docker run -d --name yearning \ + -p11110:8000 \ + -e MYSQL_DB=Yearning \ + -e MYSQL_USER=admin -e MYSQL_ADDR=172.16.100.138:3306 -e MYSQL_PASSWORD=xxxxxx \ + yearning:lts + diff --git a/2.docker/zabbix.sh b/2.docker/zabbix.sh new file mode 100644 index 0000000..d0be65c --- /dev/null +++ b/2.docker/zabbix.sh @@ -0,0 +1,87 @@ +#!/bin/bash +### + # @Author: admin@attacker.club + # @Date: 2022-09-29 14:35:55 + # @LastEditTime: 2023-03-06 01:14:56 + # @Description: +### + + + docker stop zabbix-mysql >2&1 + docker stop zabbix-web >2&1 + docker stop zabbix-server >2&1 + docker rm zabbix-mysql >2&1 + docker rm zabbix-web >2&1 + docker rm zabbix-server >2&1 + + ## DB服务 + dataDir="/opt/docker-data/mysql" + rm ="/opt/docker-data/mysql" + yum remove mariadb* -y # 卸载默认mariadb + rpm -ivh https://repo.mysql.com/mysql80-community-release-el7.rpm + yum install mysql-community-client -y # 安装mysql client + + + if [ ! "$rootPassword" ]; then + rootPassword=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 12` + zbxPassword=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 12` + echo "rootPassword=$rootPassword" >> ~/.bashrc; + echo "zbxPassword=$zbxPassword" >> ~/.bashrc; + fi + + + + echo "> 启动mysql" + docker run \ + --restart always \ + -d -p 3306:3306 \ + --name zabbix-mysql \ + --hostname zabbix-mysql \ + -e MYSQL_ROOT_PASSWORD=${rootPassword} \ + -e MYSQL_USER="zabbix" \ + -e MYSQL_PASSWORD=${zbxPassword} \ + -e MYSQL_DATABASE="zabbix" \ + -v $dataDir:/var/lib/mysql \ + mysql:8 --character-set-server=utf8 --collation-server=utf8_bin + + sleep 10 + ## 启动zabbix server + echo "> 启动zabbix server" + docker run -d -p 10051:10051 \ + --restart always \ + --name zabbix-server \ + --hostname zabbix-server \ + --link zabbix-mysql:mysql \ + -e DB_SERVER_HOST="mysql" \ + -e MYSQL_USER="zabbix" \ + -e MYSQL_PASSWORD="${zbxPassword}" \ + -v /etc/localtime:/etc/localtime:ro \ + -v /data/docker/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \ + -v /data/docker/zabbix/externalscripts:/usr/lib/zabbix/externalscripts \ + zabbix/zabbix-server-mysql:ubuntu-6.0-latest + # zabbix/zabbix-server-mysql:latest + + + ## 启动zabbix web + echo "> 启动zabbix web" + docker run -d -p 81:8080 \ + --restart always \ + --name zabbix-web \ + --hostname zabbix-web \ + --link zabbix-mysql:mysql \ + --link zabbix-server:zabbix-server \ + -e DB_SERVER_HOST="mysql" \ + -e MYSQL_USER="zabbix" \ + -e MYSQL_PASSWORD="${zbxPassword}" \ + -e ZBX_SERVER_HOST="zabbix-server" \ + -e PHP_TZ="Asia/Shanghai" \ + zabbix/zabbix-web-nginx-mysql:6.0-alpine-latest + # zabbix/zabbix-web-nginx-mysql:latest + + sleep 3 + echo "mysql -h127.0.0.1 -uroot -p$rootPassword" > mysql.txt + echo "mysql -h127.0.0.1 -uzabbix -p$zbxPassword" >> mysql.txt + echo "http://zabbix 账号: Admin / zabbix" + ## sql添加远程账号 + # CREATE USER 'admin'@'%' ; + # GRANT ALL ON *.* TO 'admin'@'%' IDENTIFIED WITH mysql_native_password BY 'adminPwd123'; \ No newline at end of file diff --git a/3.kubernetes/Manifests/busybox.yml b/3.kubernetes/Manifests/busybox.yml new file mode 100644 index 0000000..d5292f3 --- /dev/null +++ b/3.kubernetes/Manifests/busybox.yml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Pod +metadata: + name: busybox + namespace: kxyyq4 +spec: + containers: + - image: busybox + command: + - sleep + - "3600" + imagePullPolicy: IfNotPresent + name: busybox +restartPolicy: Always \ No newline at end of file diff --git a/3.kubernetes/Manifests/cmdb.yml b/3.kubernetes/Manifests/cmdb.yml new file mode 100644 index 0000000..e69de29 diff --git a/3.kubernetes/Manifests/halloworld.yml b/3.kubernetes/Manifests/halloworld.yml new file mode 100644 index 0000000..a07a34a --- /dev/null +++ b/3.kubernetes/Manifests/halloworld.yml @@ -0,0 +1,20 @@ + apiVersion: apps/v1 + kind: Deployment + metadata: + name: hello-world + spec: + selector: + matchLabels: + run: load-balancer-example + replicas: 2 + template: + metadata: + labels: + run: load-balancer-example + spec: + containers: + - name: hello-world + image: registry.cn-hangzhou.aliyuncs.com/aliyun_google/google-sample-node-hello:1.0 + ports: + - containerPort: 8080 + protocol: TCP \ No newline at end of file diff --git a/3.kubernetes/Manifests/nginx.yml b/3.kubernetes/Manifests/nginx.yml new file mode 100644 index 0000000..c727d1c --- /dev/null +++ b/3.kubernetes/Manifests/nginx.yml @@ -0,0 +1,22 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: # metadata是该资源的元数据,name是必须的元数据项 + name: nginx-deployment + namespace: test # 指定命名空间 + labels: + app: nginx +spec: # spec部分是该Deployment的规则说明 + replicas: 2 + selector: + matchLabels: + app: nginx + template: # template定义Pod的模板,这是配置的重要部分 + metadata: # 定义Pod的元数据,至少要顶一个label,label的key和value可以任意指定 + labels: + app: nginx + spec: # spec描述的是Pod的规则,此部分定义pod中每一个容器的属性,name和image是必需的 + containers: + - name: nginx + image: nginx:1.23-debian-11 # 提供本地nginx镜像 + ports: + - containerPort: 80 diff --git a/3.kubernetes/configmap/cmdb-configmap.yml b/3.kubernetes/configmap/cmdb-configmap.yml new file mode 100644 index 0000000..0bd5b1f --- /dev/null +++ b/3.kubernetes/configmap/cmdb-configmap.yml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: mysql-cmdb + namespace: test +data: + DB_HOST: "66.94.125.73" + DB_PORT: "63306" + DB_NAME: "cmdb" diff --git a/3.kubernetes/configmap/configmap.yml b/3.kubernetes/configmap/configmap.yml new file mode 100644 index 0000000..993ac42 --- /dev/null +++ b/3.kubernetes/configmap/configmap.yml @@ -0,0 +1,8 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: myblog + namespace: test +data: + MYSQL_HOST: "66.94.125.73" + MYSQL_PORT: "63306" \ No newline at end of file diff --git a/3.kubernetes/deployment/deploy-cmdb.yml b/3.kubernetes/deployment/deploy-cmdb.yml new file mode 100644 index 0000000..0d1d24d --- /dev/null +++ b/3.kubernetes/deployment/deploy-cmdb.yml @@ -0,0 +1,82 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: cmdb + namespace: test +spec: + replicas: 1 + selector: + matchLabels: + app: cmdb + template: + metadata: + labels: + app: cmdb + spec: + containers: + - name: cmdb + # image: docker.io/lghost/cmdb:latest + image: harbor.opsbase.cn/public/test.demo.python.cmdb:b6c565d + imagePullPolicy: Always + env: + - name: DB_HOST + valueFrom: + configMapKeyRef: + name: mysql-cmdb + key: DB_HOST + - name: DB_PORT + valueFrom: + configMapKeyRef: + name: mysql-cmdb + key: DB_PORT + - name: DB_USER + valueFrom: + secretKeyRef: + name: mysql-cmdb + key: DB_USER + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: mysql-cmdb + key: DB_PASSWORD + - name: REDIS_HOST + valueFrom: + configMapKeyRef: + name: redis-cmdb + key: REDIS_HOST + - name: REDIS_PORT + valueFrom: + configMapKeyRef: + name: redis-cmdb + key: REDIS_PORT + - name: REDIS_PWD + valueFrom: + secretKeyRef: + name: redis-cmdb + key: REDIS_PWD + + ports: + - containerPort: 8000 + resources: + requests: + memory: 1500Mi + cpu: 100m + limits: + memory: 35000Mi + cpu: 500m + livenessProbe: + httpGet: + path: /prometheus/metrics + port: 8000 + scheme: HTTP + initialDelaySeconds: 15 # 容器启动后第一次执行探测是需要等待多少秒 + periodSeconds: 120 # 执行探测的频率 + timeoutSeconds: 5 # 探测超时时间 + readinessProbe: + httpGet: + path: /prometheus/metrics + port: 8000 + scheme: HTTP + initialDelaySeconds: 15 + timeoutSeconds: 3 + periodSeconds: 15 diff --git a/3.kubernetes/deployment/deploy-myblog.yml b/3.kubernetes/deployment/deploy-myblog.yml new file mode 100644 index 0000000..2278d16 --- /dev/null +++ b/3.kubernetes/deployment/deploy-myblog.yml @@ -0,0 +1,65 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: myblog + namespace: test +spec: + replicas: 2 # 指定Pod副本数 + selector: # 指定Pod的选择器 + matchLabels: + app: myblog + template: + metadata: + labels: # 给Pod打label + app: myblog + spec: + containers: + - name: myblog + image: harbor.opsbase.cn/public/myblog + imagePullPolicy: IfNotPresent + env: + - name: MYSQL_HOST + valueFrom: + configMapKeyRef: + name: test-db-configmap + key: Mysql_Host + - name: MYSQL_PORT + valueFrom: + configMapKeyRef: + name: test-db-configmap + key: Mysql_PORT + - name: MYSQL_USER + valueFrom: + secretKeyRef: + name: test-db-secret + key: MYSQL_USER + - name: MYSQL_PASSWD + valueFrom: + secretKeyRef: + name: test-db-secret + key: MYSQL_PASSWD + ports: + - containerPort: 80 + resources: + requests: + memory: 100Mi + cpu: 50m + limits: + memory: 500Mi + cpu: 100m + livenessProbe: + httpGet: + path: /blog/index/ + port: 80 + scheme: HTTP + initialDelaySeconds: 10 # 容器启动后第一次执行探测是需要等待多少秒 + periodSeconds: 15 # 执行探测的频率 + timeoutSeconds: 2 # 探测超时时间 + readinessProbe: + httpGet: + path: /blog/index/ + port: 80 + scheme: HTTP + initialDelaySeconds: 10 + timeoutSeconds: 2 + periodSeconds: 15 \ No newline at end of file diff --git a/3.kubernetes/deployment/sshd-pod-svc.yml b/3.kubernetes/deployment/sshd-pod-svc.yml new file mode 100644 index 0000000..d11d50d --- /dev/null +++ b/3.kubernetes/deployment/sshd-pod-svc.yml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: dev-opsbase-ssh-svc + namespace: test +spec: + ports: + - port: 22 + protocol: TCP + targetPort: 22 + selector: + app: dev-opsbase-ssh + type: ClusterIP diff --git a/3.kubernetes/deployment/sshd-pod.yml b/3.kubernetes/deployment/sshd-pod.yml new file mode 100644 index 0000000..988f616 --- /dev/null +++ b/3.kubernetes/deployment/sshd-pod.yml @@ -0,0 +1,28 @@ +apiVersion: apps/v1 # Api接口版本 +kind: Deployment # 定义控制器 +metadata: + name: dev-opsbase-ssh # 定义deployment名称 + namespace: test +spec: + replicas: 1 # 副本数量,还需要指定副本标签与 Deployment控制器进行匹配 + selector: # 指定Pod选择器 + matchLabels: # 标签匹配方式 + app: dev-opsbase-ssh # 匹配metadata.name名称 + template: # pod容器 + metadata: # 具体信息 + labels: # 定义标签 + app: dev-opsbase-ssh # pod名称 + spec: + containers: + - name: dev-opsbase-ssh # 容器名称 + image: lghost/sshd:v0.1 # 拉取镜像 + imagePullPolicy: IfNotPresent # 镜像pull策略 + ports: + - containerPort: 22 + resources: # 限制资源 + requests: + memory: 100Mi + cpu: 50m + limits: + memory: 500Mi + cpu: 100m diff --git a/3.kubernetes/endpoint/mysql.yml b/3.kubernetes/endpoint/mysql.yml new file mode 100644 index 0000000..63a1cb8 --- /dev/null +++ b/3.kubernetes/endpoint/mysql.yml @@ -0,0 +1,24 @@ +apiVersion: v1 +kind: Service +metadata: + name: mysql-bos + namespace: base +spec: + ports: + - port: 3306 + targetPort: 3306 + protocol: TCP + name: mysql-bos +--- +kind: Endpoints +apiVersion: v1 +metadata: + name: mysql-bos + namespace: base +subsets: + - addresses: + - ip: 10.10.10.60 + ports: + - name: mysql-bos + port: 3306 + protocol: TCP \ No newline at end of file diff --git a/3.kubernetes/endpoint/readme.md b/3.kubernetes/endpoint/readme.md new file mode 100644 index 0000000..27a042a --- /dev/null +++ b/3.kubernetes/endpoint/readme.md @@ -0,0 +1,4 @@ +# endpoint + +使用endpoint 将容器外地址改为数据库连接: +mysql-bos.base:3306 \ No newline at end of file diff --git a/3.kubernetes/hpa-cronhpa/demo_deployment_cronhpa.yaml b/3.kubernetes/hpa-cronhpa/demo_deployment_cronhpa.yaml new file mode 100644 index 0000000..2ad6380 --- /dev/null +++ b/3.kubernetes/hpa-cronhpa/demo_deployment_cronhpa.yaml @@ -0,0 +1,41 @@ +--- +apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1 +kind: Deployment +metadata: + name: nginx-deployment-basic + labels: + app: nginx +spec: + replicas: 2 + selector: + matchLabels: + app: nginx + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx:1.7.9 # replace it with your exactly + ports: + - containerPort: 80 +--- +apiVersion: autoscaling.alibabacloud.com/v1beta1 +kind: CronHorizontalPodAutoscaler +metadata: + labels: + controller-tools.k8s.io: "1.0" + name: cronhpa-nginx-deployment-basic +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: nginx-deployment-basic + jobs: + - name: "scale-down" + schedule: "* * 23 * * *" + targetSize: 1 + - name: "scale-up" + schedule: "* * 17 * * *" + targetSize: 2 diff --git a/3.kubernetes/hpa/components.yaml b/3.kubernetes/hpa/components.yaml new file mode 100644 index 0000000..d8d6890 --- /dev/null +++ b/3.kubernetes/hpa/components.yaml @@ -0,0 +1,186 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + k8s-app: metrics-server + name: metrics-server + namespace: kube-system +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + k8s-app: metrics-server + rbac.authorization.k8s.io/aggregate-to-admin: "true" + rbac.authorization.k8s.io/aggregate-to-edit: "true" + rbac.authorization.k8s.io/aggregate-to-view: "true" + name: system:aggregated-metrics-reader +rules: +- apiGroups: + - metrics.k8s.io + resources: + - pods + - nodes + verbs: + - get + - list + - watch +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + k8s-app: metrics-server + name: system:metrics-server +rules: +- apiGroups: + - "" + resources: + - pods + - nodes + - nodes/stats + - namespaces + - configmaps + verbs: + - get + - list + - watch +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + labels: + k8s-app: metrics-server + name: metrics-server-auth-reader + namespace: kube-system +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: extension-apiserver-authentication-reader +subjects: +- kind: ServiceAccount + name: metrics-server + namespace: kube-system +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + labels: + k8s-app: metrics-server + name: metrics-server:system:auth-delegator +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: system:auth-delegator +subjects: +- kind: ServiceAccount + name: metrics-server + namespace: kube-system +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + labels: + k8s-app: metrics-server + name: system:metrics-server +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: system:metrics-server +subjects: +- kind: ServiceAccount + name: metrics-server + namespace: kube-system +--- +apiVersion: v1 +kind: Service +metadata: + labels: + k8s-app: metrics-server + name: metrics-server + namespace: kube-system +spec: + ports: + - name: https + port: 443 + protocol: TCP + targetPort: https + selector: + k8s-app: metrics-server +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + k8s-app: metrics-server + name: metrics-server + namespace: kube-system +spec: + selector: + matchLabels: + k8s-app: metrics-server + strategy: + rollingUpdate: + maxUnavailable: 0 + template: + metadata: + labels: + k8s-app: metrics-server + spec: + containers: + - args: + - --cert-dir=/tmp + - --secure-port=4443 + - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname + - --kubelet-use-node-status-port + image: k8s.gcr.io/metrics-server/metrics-server:v0.4.4 + imagePullPolicy: IfNotPresent + livenessProbe: + failureThreshold: 3 + httpGet: + path: /livez + port: https + scheme: HTTPS + periodSeconds: 10 + name: metrics-server + ports: + - containerPort: 4443 + name: https + protocol: TCP + readinessProbe: + failureThreshold: 3 + httpGet: + path: /readyz + port: https + scheme: HTTPS + periodSeconds: 10 + securityContext: + readOnlyRootFilesystem: true + runAsNonRoot: true + runAsUser: 1000 + volumeMounts: + - mountPath: /tmp + name: tmp-dir + nodeSelector: + kubernetes.io/os: linux + priorityClassName: system-cluster-critical + serviceAccountName: metrics-server + volumes: + - emptyDir: {} + name: tmp-dir +--- +apiVersion: apiregistration.k8s.io/v1 +kind: APIService +metadata: + labels: + k8s-app: metrics-server + name: v1beta1.metrics.k8s.io +spec: + group: metrics.k8s.io + groupPriorityMinimum: 100 + insecureSkipTLSVerify: true + service: + name: metrics-server + namespace: kube-system + version: v1beta1 + versionPriority: 100 diff --git a/3.kubernetes/ingress/demo-多路径转发及重写的实现/bookstore.details.ingress.yaml b/3.kubernetes/ingress/demo-多路径转发及重写的实现/bookstore.details.ingress.yaml new file mode 100644 index 0000000..d6dbe5e --- /dev/null +++ b/3.kubernetes/ingress/demo-多路径转发及重写的实现/bookstore.details.ingress.yaml @@ -0,0 +1,17 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: bookstore-details + namespace: default +spec: + rules: + - host: bookstore.luffy.com + http: + paths: + - path: /details + pathType: Prefix + backend: + service: + name: details + port: + number: 9080 \ No newline at end of file diff --git a/3.kubernetes/ingress/demo-多路径转发及重写的实现/bookstore.ingress.yml b/3.kubernetes/ingress/demo-多路径转发及重写的实现/bookstore.ingress.yml new file mode 100644 index 0000000..e83558f --- /dev/null +++ b/3.kubernetes/ingress/demo-多路径转发及重写的实现/bookstore.ingress.yml @@ -0,0 +1,24 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: bookstore + namespace: default +spec: + rules: + - host: bookstore.luffy.com + http: + paths: + - path: /reviews + pathType: Prefix + backend: + service: + name: reviews + port: + number: 9080 + - path: /details + pathType: Prefix + backend: + service: + name: details + port: + number: 9080 \ No newline at end of file diff --git a/3.kubernetes/ingress/demo-多路径转发及重写的实现/bookstore.reviews.ingress.yaml b/3.kubernetes/ingress/demo-多路径转发及重写的实现/bookstore.reviews.ingress.yaml new file mode 100644 index 0000000..9a79ad4 --- /dev/null +++ b/3.kubernetes/ingress/demo-多路径转发及重写的实现/bookstore.reviews.ingress.yaml @@ -0,0 +1,19 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: bookstore-reviews + namespace: default + annotations: + nginx.ingress.kubernetes.io/rewrite-target: /reviews/$1 +spec: + rules: + - host: bookstore.luffy.com + http: + paths: + - path: /api/reviews/(.*) + pathType: Prefix + backend: + service: + name: reviews + port: + number: 9080 \ No newline at end of file diff --git a/3.kubernetes/ingress/demo-多路径转发及重写的实现/detail.dpl.yml b/3.kubernetes/ingress/demo-多路径转发及重写的实现/detail.dpl.yml new file mode 100644 index 0000000..276cf59 --- /dev/null +++ b/3.kubernetes/ingress/demo-多路径转发及重写的实现/detail.dpl.yml @@ -0,0 +1,22 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: details + labels: + app: details +spec: + replicas: 1 + selector: + matchLabels: + app: details + template: + metadata: + labels: + app: details + spec: + containers: + - name: details + image: docker.io/istio/examples-bookinfo-details-v1:1.16.2 + imagePullPolicy: IfNotPresent + ports: + - containerPort: 9080 \ No newline at end of file diff --git a/3.kubernetes/ingress/demo-多路径转发及重写的实现/detail.svc.yml b/3.kubernetes/ingress/demo-多路径转发及重写的实现/detail.svc.yml new file mode 100644 index 0000000..fe649d5 --- /dev/null +++ b/3.kubernetes/ingress/demo-多路径转发及重写的实现/detail.svc.yml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: details + labels: + app: details +spec: + ports: + - port: 9080 + name: http + selector: + app: details + \ No newline at end of file diff --git a/3.kubernetes/ingress/demo-多路径转发及重写的实现/readme.md b/3.kubernetes/ingress/demo-多路径转发及重写的实现/readme.md new file mode 100644 index 0000000..81a26a5 --- /dev/null +++ b/3.kubernetes/ingress/demo-多路径转发及重写的实现/readme.md @@ -0,0 +1,28 @@ + +## 多path转发示例 + +### 目标 + +myblog.pod.opsbase.cn → 172.21.51.143 ↓ + /foo/aaa service1:4200/foo/aaa + /bar service2:8080 + / myblog:80/ +### 命令 + +```bash +kubectl apply -f detail.dpl.yml +kubectl apply -f detail.svc.yml + +kubectl apply -f reviews.dpl.yml +kubectl apply -f reviews.svc.yml + +``` + + +## URL重写 + +目标: + +bookstore.luffy.com → 172.21.51.67 ↓ + /api/reviews -> reviews service + /details -> details service diff --git a/3.kubernetes/ingress/demo-多路径转发及重写的实现/reviews.dpl.yml b/3.kubernetes/ingress/demo-多路径转发及重写的实现/reviews.dpl.yml new file mode 100644 index 0000000..e585123 --- /dev/null +++ b/3.kubernetes/ingress/demo-多路径转发及重写的实现/reviews.dpl.yml @@ -0,0 +1,25 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: reviews + labels: + app: reviews +spec: + replicas: 1 + selector: + matchLabels: + app: reviews + template: + metadata: + labels: + app: reviews + spec: + containers: + - name: reviews + image: docker.io/istio/examples-bookinfo-reviews-v3:1.16.2 + imagePullPolicy: IfNotPresent + env: + - name: LOG_DIR + value: "/tmp/logs" + ports: + - containerPort: 9080 \ No newline at end of file diff --git a/3.kubernetes/ingress/demo-多路径转发及重写的实现/reviews.svc.yml b/3.kubernetes/ingress/demo-多路径转发及重写的实现/reviews.svc.yml new file mode 100644 index 0000000..491adb3 --- /dev/null +++ b/3.kubernetes/ingress/demo-多路径转发及重写的实现/reviews.svc.yml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: reviews + labels: + app: reviews +spec: + ports: + - port: 9080 + name: http + selector: + app: reviews \ No newline at end of file diff --git a/3.kubernetes/ingress/https_myblog.yml b/3.kubernetes/ingress/https_myblog.yml new file mode 100644 index 0000000..74ae222 --- /dev/null +++ b/3.kubernetes/ingress/https_myblog.yml @@ -0,0 +1,26 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: myblog + namespace: test + annotations: # 添加nginx参数 + nginx.ingress.kubernetes.io/force-ssl-redirect: "false" # 同时支持http/https + nginx.ingress.kubernetes.io/proxy-body-size: 1000m + nginx.ingress.kubernetes.io/ssl-redirect: "false" + nginx.org/client-max-body-size: 1000m +spec: + rules: + - host: myblog.opsbase.cn + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: myblog + port: + number: 80 + tls: + - hosts: + - myblog.opsbase.cn + secretName: tls-myblog \ No newline at end of file diff --git a/3.kubernetes/ingress/ingress_cmdb.yml b/3.kubernetes/ingress/ingress_cmdb.yml new file mode 100644 index 0000000..75ce870 --- /dev/null +++ b/3.kubernetes/ingress/ingress_cmdb.yml @@ -0,0 +1,17 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: cmdb-ing + namespace: test +spec: + rules: + - host: cmdb.pod.opsbase.cn + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: cmdb-svc + port: + number: 80 \ No newline at end of file diff --git a/3.kubernetes/ingress/ingress_myblog.yml b/3.kubernetes/ingress/ingress_myblog.yml new file mode 100644 index 0000000..e16521b --- /dev/null +++ b/3.kubernetes/ingress/ingress_myblog.yml @@ -0,0 +1,23 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: myblog + namespace: test +spec: + rules: + - host: myblog.pod.opsbase.cn + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: myblog + port: + number: 80 + tls: + - hosts: + - myblog.pod.opsbase.cn + secretName: tls-pod.opsbase.cn + + \ No newline at end of file diff --git a/3.kubernetes/ingress/mandatory.yml b/3.kubernetes/ingress/mandatory.yml new file mode 100644 index 0000000..598b009 --- /dev/null +++ b/3.kubernetes/ingress/mandatory.yml @@ -0,0 +1,296 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: ingress-nginx + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + +--- + +kind: ConfigMap +apiVersion: v1 +metadata: + name: nginx-configuration + namespace: ingress-nginx + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: tcp-services + namespace: ingress-nginx + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + +--- +kind: ConfigMap +apiVersion: v1 +metadata: + name: udp-services + namespace: ingress-nginx + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: nginx-ingress-serviceaccount + namespace: ingress-nginx + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRole +metadata: + name: nginx-ingress-clusterrole + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx +rules: + - apiGroups: + - "" + resources: + - configmaps + - endpoints + - nodes + - pods + - secrets + verbs: + - list + - watch + - apiGroups: + - "" + resources: + - nodes + verbs: + - get + - apiGroups: + - "" + resources: + - services + verbs: + - get + - list + - watch + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + - apiGroups: + - "extensions" + - "networking.k8s.io" + resources: + - ingresses + verbs: + - get + - list + - watch + - apiGroups: + - "extensions" + - "networking.k8s.io" + resources: + - ingresses/status + verbs: + - update + +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: Role +metadata: + name: nginx-ingress-role + namespace: ingress-nginx + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx +rules: + - apiGroups: + - "" + resources: + - configmaps + - pods + - secrets + - namespaces + verbs: + - get + - apiGroups: + - "" + resources: + - configmaps + resourceNames: + # Defaults to "-" + # Here: "-" + # This has to be adapted if you change either parameter + # when launching the nginx-ingress-controller. + - "ingress-controller-leader-nginx" + verbs: + - get + - update + - apiGroups: + - "" + resources: + - configmaps + verbs: + - create + - apiGroups: + - "" + resources: + - endpoints + verbs: + - get + +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: RoleBinding +metadata: + name: nginx-ingress-role-nisa-binding + namespace: ingress-nginx + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: nginx-ingress-role +subjects: + - kind: ServiceAccount + name: nginx-ingress-serviceaccount + namespace: ingress-nginx + +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + name: nginx-ingress-clusterrole-nisa-binding + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: nginx-ingress-clusterrole +subjects: + - kind: ServiceAccount + name: nginx-ingress-serviceaccount + namespace: ingress-nginx + +--- + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx-ingress-controller + namespace: ingress-nginx + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx +spec: + replicas: 1 + selector: + matchLabels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + template: + metadata: + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx + annotations: + prometheus.io/port: "10254" + prometheus.io/scrape: "true" + spec: + hostNetwork: true #添加为host模式 + # wait up to five minutes for the drain of connections + terminationGracePeriodSeconds: 300 + serviceAccountName: nginx-ingress-serviceaccount + #serviceAccount: kube-dns + #serviceAccountName: kube-dns + nodeSelector: + ingress: "true" + containers: + - name: nginx-ingress-controller + image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0 + args: + - /nginx-ingress-controller + - --configmap=$(POD_NAMESPACE)/nginx-configuration + - --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services + - --udp-services-configmap=$(POD_NAMESPACE)/udp-services + - --publish-service=$(POD_NAMESPACE)/ingress-nginx + - --annotations-prefix=nginx.ingress.kubernetes.io + securityContext: + allowPrivilegeEscalation: true + capabilities: + drop: + - ALL + add: + - NET_BIND_SERVICE + # www-data -> 101 + runAsUser: 101 + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + ports: + - name: http + containerPort: 80 + protocol: TCP + - name: https + containerPort: 443 + protocol: TCP + livenessProbe: + failureThreshold: 3 + httpGet: + path: /healthz + port: 10254 + scheme: HTTP + initialDelaySeconds: 10 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 10 + readinessProbe: + failureThreshold: 3 + httpGet: + path: /healthz + port: 10254 + scheme: HTTP + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 10 + lifecycle: + preStop: + exec: + command: + - /wait-shutdown + +--- + +apiVersion: v1 +kind: LimitRange +metadata: + name: ingress-nginx + namespace: ingress-nginx + labels: + app.kubernetes.io/name: ingress-nginx + app.kubernetes.io/part-of: ingress-nginx +spec: + limits: + - min: + memory: 90Mi + cpu: 100m + type: Container diff --git a/3.kubernetes/ingress/tls.crt b/3.kubernetes/ingress/tls.crt new file mode 100644 index 0000000..e944803 --- /dev/null +++ b/3.kubernetes/ingress/tls.crt @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDMTCCAhmgAwIBAgIJAOEPd8tPOqd3MA0GCSqGSIb3DQEBCwUAMC8xFTATBgNV +BAMMDCoub3BzYmFzZS5jbjEWMBQGA1UECgwNaW5ncmVzcy1uZ2lueDAeFw0yMjAz +MjUxODE5MzlaFw0zMDAzMjMxODE5MzlaMC8xFTATBgNVBAMMDCoub3BzYmFzZS5j +bjEWMBQGA1UECgwNaW5ncmVzcy1uZ2lueDCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAKDY390pDMhPaO8U3Lxt4BUnA20A7nIcCTBCu7pHdOAXUua2Sfje +OMaKjx+SYA1T2I6fvS830vwiPLGZTIPK9YXS9tL/Zd8NWvxqfRJhKVbGjgTxi0Rv +ARhAmbnFwed+DQIs+oDZgrhrpIYZIEmD82RWEFPtYTcPs/Tf5Vn8QVE6dOUP8NpF +Ck84gp2W1qjnSMF84K6ESBYOvFi76feOGZ5OwGwS9U2DeLDp5ceKwBzwXiqRugMR +HyACgrBFFK+BSkq8duKdKej4SEwVO2gI4HHFXBwpLtpo2iAv5/dA/+nxo0xWeflj +FwTgxxzwtmfKilR9YZxpss2QWibnBFmn7MMCAwEAAaNQME4wHQYDVR0OBBYEFBMO +VbR8Y4g9wqgZQ6I4TVmEn7+hMB8GA1UdIwQYMBaAFBMOVbR8Y4g9wqgZQ6I4TVmE +n7+hMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAJWTdX6WTsdi5ZnD +3eFqcfAaJAqyALgJaDh+DEL+Ke9pgRlJDF9//iO95JfDfuLu17Vv0pngQZfabP/f +L9ui308uEiEpwbpqFus+Q2k6uzYMzVk1RDT81fgPtMk1g13dCnzibhn3U0fS0k1o +AYsEqKk4RG0wvNWS+/XYGEAjE6mgw79lkeQpChWYRyA6H/nZBc+tsTx+lEf8Edsl +VW3iDpOl00rRoOtvBWqEGVV+RD5EcNcCFwCb0wPFKs2N24T7E0PqXrRzaX3beeo9 +BdBfNjc0GOC4kmxkMtnHRnVxtKOzeNwa8u/aToo3dko8a2TtgdioBT3u5jPLY7Pz +AawEAaI= +-----END CERTIFICATE----- diff --git a/3.kubernetes/ingress/tls.key b/3.kubernetes/ingress/tls.key new file mode 100644 index 0000000..1bffc53 --- /dev/null +++ b/3.kubernetes/ingress/tls.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCg2N/dKQzIT2jv +FNy8beAVJwNtAO5yHAkwQru6R3TgF1Lmtkn43jjGio8fkmANU9iOn70vN9L8Ijyx +mUyDyvWF0vbS/2XfDVr8an0SYSlWxo4E8YtEbwEYQJm5xcHnfg0CLPqA2YK4a6SG +GSBJg/NkVhBT7WE3D7P03+VZ/EFROnTlD/DaRQpPOIKdltao50jBfOCuhEgWDrxY +u+n3jhmeTsBsEvVNg3iw6eXHisAc8F4qkboDER8gAoKwRRSvgUpKvHbinSno+EhM +FTtoCOBxxVwcKS7aaNogL+f3QP/p8aNMVnn5YxcE4Mcc8LZnyopUfWGcabLNkFom +5wRZp+zDAgMBAAECggEAOscl/365whVqxjt8cotAYNpx4Qp/GEnwfadVTLxCFIXR +cKfankwuuTb3GFV4Lkaek3gCPVgMDMFCJrBbiqnHUREHy5EzG/CYeDc931KMNb63 +NU1DVE2wO7mXs5B1zG9+t3XSUPWrVFNZuvtBljvW3KqqqtDLPsDJRUnwWRLal6DN +o2RM0wUmAEdnsXicCLN76QDSyDpgDbHzZe2lI3zgKIm1p15DUHh3HZLTlY4ER1IS +nq4TLXX9raHHVUY9pvwiiOhoRUsNHL/WScHpC5Co7K1lRWpok7egZtrtsbz6on/C +kSThCWnrTUcHeUdX5M0DHb7A5X3OdaRkNJlD7ya3CQKBgQDSCwgRjT4uDlS+Nr3V +v89IIxpk/tqNNrwEtrXr2VsVJeW5dpReo/2Tn4bD8zGE2+V8tLq10jCoVzbhjPZI +rdgDdi1F6Yk/CWDdFP00w0h0FDbJSXOcSoFuQcE5tLKqcr4pFEnwGKwHmQ+CrsO9 +hrWpjAQk2IF+R39ZF1fP3YRZTQKBgQDECkXIaVff/X0jhGaMBNEEtR+1ePE/5qUy +EgP+NnbKu4p+W8g1ridk90jNcYTQWJDqXgF/W+Oa7d878OP6i69PhTO1rJTGDPUv +h7COCnbajwYigwM9263IbwujQORWLTyuJiO2E0QAteFxaHK380wZrLF6YFE32p77 +bXXogtLWTwKBgCdhGBcqUvERkMPEwZyUhIkyw50RxunYzDFaDAt2ycPSQhqeZ7zC +pCUMMJkGPE97ZrAVtjeme6bkCw8IfZgst6YWfvBvk2K1IGryp3I/9pKEw6zDT6CK +u29vdomaHjEkqBBNlHsmNQKLqMPIfjxHSEHMVW6PBOAnCXIrlTQMhOa1AoGACLzQ +eWtAkGoy7qdTDsCUNFqCTEtUrV1xVXb6GJWC2+xZ8uHSXZoihVyEMSvzGHoqE1gX +Rv7oeRpLDdfhwWQCb0/nixxjESS4tOKeWuZaf8lKI7WlKlelOj7AzQjyZGjlwHlQ +tCfNqx5wKubV3h8I8EgDLQon9I5Y8aniTHewP/8CgYEApo2rh+JpeGWSQrYG8d3a +n4DtmGVQe5OI70s5K4k6nHgHe5kUtz7NT5Iog71gqQCNX9CjusS6X4M16prYr7oV +yu8mC7M8DhXDZHFe76grD7PVKT0MlTTb6VVxQk1KBWIzYCVP1fMd1wQNLSHpADsX +1MsxsQ1KU6Wdom0yCMzGSdg= +-----END PRIVATE KEY----- diff --git a/3.kubernetes/jenkins/add_domian.yaml b/3.kubernetes/jenkins/add_domian.yaml new file mode 100644 index 0000000..7df0cdf --- /dev/null +++ b/3.kubernetes/jenkins/add_domian.yaml @@ -0,0 +1,17 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: hz-jenkins + namespace: jenkins +spec: + rules: + - host: hz-jenkins.pod.opsbase.cn + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: jenkins + port: + number: 8080 \ No newline at end of file diff --git a/3.kubernetes/jenkins/jenkins-all.yaml b/3.kubernetes/jenkins/jenkins-all.yaml new file mode 100644 index 0000000..182c875 --- /dev/null +++ b/3.kubernetes/jenkins/jenkins-all.yaml @@ -0,0 +1,118 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: jenkins +--- +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: jenkins + namespace: jenkins +spec: + accessModes: + - ReadWriteOnce + storageClassName: nfs-storage + resources: + requests: + storage: 200Gi +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: jenkins + namespace: jenkins +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: jenkins-crb +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-admin +subjects: +- kind: ServiceAccount + name: jenkins + namespace: jenkins +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: jenkins-master + namespace: jenkins +spec: + replicas: 1 + selector: + matchLabels: + devops: jenkins-master + template: + metadata: + labels: + devops: jenkins-master + spec: + serviceAccount: jenkins #Pod 需要使用的服务账号 + initContainers: + - name: fix-permissions + image: busybox + command: ["sh", "-c", "chown -R 1000:1000 /var/jenkins_home"] + securityContext: + privileged: true + volumeMounts: + - name: jenkinshome + mountPath: /var/jenkins_home + containers: + - name: jenkins + # image: jenkinsci/blueocean:1.25.2 + image: jenkinsci/blueocean:latest + imagePullPolicy: IfNotPresent + ports: + - name: http #Jenkins Master Web 服务端口 + containerPort: 8080 + - name: slavelistener #Jenkins Master 供未来 Slave 连接的端口 + containerPort: 50000 + volumeMounts: + - name: jenkinshome + mountPath: /var/jenkins_home + env: + - name: JAVA_OPTS + value: "-Xms4096m -Xmx5120m -Duser.timezone=Asia/Shanghai -Dhudson.model.DirectoryBrowserSupport.CSP=" + volumes: + - name: jenkinshome + persistentVolumeClaim: + claimName: jenkins +--- +apiVersion: v1 +kind: Service +metadata: + name: jenkins + namespace: jenkins +spec: + ports: + - name: http + port: 8080 + targetPort: 8080 + - name: slavelistener + port: 50000 + targetPort: 50000 + type: ClusterIP + selector: + devops: jenkins-master +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: jenkins-web + namespace: jenkins +spec: + ingressClassName: nginx + rules: + - host: jenkins.pod.opsbase.cn + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: jenkins + port: + number: 8080 diff --git a/3.kubernetes/jenkins/jenkins-pvc.yaml b/3.kubernetes/jenkins/jenkins-pvc.yaml new file mode 100644 index 0000000..ca7dc3c --- /dev/null +++ b/3.kubernetes/jenkins/jenkins-pvc.yaml @@ -0,0 +1,12 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: jenkins + namespace: jenkins +spec: + accessModes: + - ReadWriteOnce + storageClassName: nfs-storage + resources: + requests: + storage: 200Gi diff --git a/3.kubernetes/jenkins/pipline/pipline-deploy.Jenkinsfile b/3.kubernetes/jenkins/pipline/pipline-deploy.Jenkinsfile new file mode 100644 index 0000000..4766e97 --- /dev/null +++ b/3.kubernetes/jenkins/pipline/pipline-deploy.Jenkinsfile @@ -0,0 +1,133 @@ +pipeline { + // 指定由Master还是node节点执行任务 + agent {label 'master'} + // agent {label 'jnlp-slave'} + + parameters { + branchFilter: 'origin/(.*)', + defaultValue: 'master', + name: 'GIT_BRANCH', + quickFilterEnabled: false, + selectedValue: 'NONE', + sortMode: 'NONE', + tagFilter: '*', + type: 'PT_BRANCH_TAG' + } + + options { + buildDiscarder(logRotator(numToKeepStr: '10')) + timeout(time: 10, unit: 'MINUTES') // 默认10秒超时 + } + + environment { + // PROJECT = "${JOB_BASE_NAME##*.}" + PROJECT = "${JOB_BASE_NAME}" + HARBOR_URL="harbor.opsbase.cn/public" + // 使用凭证保存钉钉接口token信息 + DINGTALK_CREDS = credentials('dingtalk') + } + stages { + stage('printenv') { + steps { + echo '打印环境变量' + sh 'printenv' + script{ + env.GIT_LOG = "" + env.BUILD_TASKS = "" + env.imageTag = "None" + } + } + } + stage('checkout') { + steps { + // 通过流水线语法自定义生成检出语句 + checkout( + [ + $class: 'GitSCM', + branches: [[name: '*/${GIT_BRANCH}']], + //branches: [[name: '*/develop']], + extensions: [ + [$class: 'CheckoutOption', timeout: 120], + [$class: 'CloneOption', depth: 1, noTags: false, reference: '', shallow: true ,timeout: 60]], + userRemoteConfigs: [[credentialsId: 'gitee', url: '${GIT_URL}']] + ] + + + ) + // checkout([$class: 'GitSCM', branches: [[name: '*/${GIT_BRANCH}']], extensions: [[$class: 'CloneOption', depth: 1, noTags: false, reference: '', shallow: true]], userRemoteConfigs: [[url: '${GIT_URL}']]]) + // updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success') + script{ + sh "git log --oneline -n 1 > gitlog.file" + env.GIT_LOG = readFile("gitlog.file").trim() + env.imageTag = sh (script: 'git rev-parse --short HEAD ${GIT_COMMIT}', returnStdout: true).trim() + env.BUILD_TASKS = "\n" + env.STAGE_NAME + } + // updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success') + + } + } + stage('build-image') { + steps { + retry(2) { sh 'docker build . -t ${HARBOR_URL}/${PROJECT}:${imageTag}' } + } + } + stage('push-image') { + steps { + retry(2) { sh 'docker push ${HARBOR_URL}/${PROJECT}:${imageTag}'} + // updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success') + script{ + env.BUILD_TASKS += "\t=>\t" + env.STAGE_NAME + } + } + } + stage('deploy') { + steps { + sh "sed -i 's#{{IMAGE_URL}}#${HARBOR_URL}/${PROJECT}:${imageTag}#g' manifests/*" + timeout(time: 1, unit: 'MINUTES') { + sh "kubectl apply -f manifests/" + } + // updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success') + script{ + env.BUILD_TASKS += "\t=>\t" + env.STAGE_NAME + } + } + } + + } + post { + success { + sh """ + curl -s 'https://oapi.dingtalk.com/robot/send?access_token=${DINGTALK_CREDS_PSW}' \ + -H 'Content-Type: application/json' \ + -d '{ + "msgtype": "markdown", + "markdown": { + "title":"${JOB_BASE_NAME}", + "text": "任务构建成功 😄 \n**项目名称**: ${JOB_BASE_NAME}\n \n**构建分支**: ${GIT_BRANCH}\n \n**Git log**: ${GIT_LOG}\n \n**构建任务**:\n ${BUILD_TASKS}\n \n**构建地址**: ${RUN_DISPLAY_URL}" + } + }' + """ + } + failure { + sh """ + curl -s 'https://oapi.dingtalk.com/robot/send?access_token=${DINGTALK_CREDS_PSW}' \ + -H 'Content-Type: application/json' \ + -d '{ + "msgtype": "markdown", + "markdown": { + "title":"${JOB_BASE_NAME}", + "text": "任务构建失败 ❌ \n**项目名称**: ${JOB_BASE_NAME}\n \n**构建分支**: ${GIT_BRANCH}\n \n**Git log**: ${GIT_LOG}\n \n**构建任务**:\n ${BUILD_TASKS}\n \n**构建地址**: ${RUN_DISPLAY_URL}" + } + }' + """ + } + always { + echo '执行完毕 !' + } + } + + +} + + + diff --git a/3.kubernetes/jenkins/pipline/pipline-image.Jenkinsfile b/3.kubernetes/jenkins/pipline/pipline-image.Jenkinsfile new file mode 100644 index 0000000..51e74f1 --- /dev/null +++ b/3.kubernetes/jenkins/pipline/pipline-image.Jenkinsfile @@ -0,0 +1,40 @@ +pipeline { + // 指定由Master还是node节点执行任务 + agent {label 'master'} + environment { + PROJECT = 'myblog' + } + stages { + stage('printenv') { + steps { + echo '打印环境变量' + sh 'printenv' + } + } + stage('Checkout') { + steps { + // 通过流水线语法自定义生成检出语句 + checkout([$class: 'GitSCM', branches: [[name: '*/${GIT_BRANCH}']], extensions: [], userRemoteConfigs: [[url: '${GIT_URL}']]]) + } + } + stage('Build-image') { + steps { + sh 'docker build . -t myblog:latest -f Dockerfile' + } + } + stage('Send-dingtalk') { + steps { + sh """ + // 添加钉钉机器人并将请求ip加入白名单 + curl 'https://oapi.dingtalk.com/robot/send?access_token=b6d0c30412ad11a9c33debc5c2245ffe95abf234079a65a62134d531dd6befe4' \ + -H 'Content-Type: application/json' \ + -d '{"msgtype": "text", + "text": { + "content": "${JOB_BASE_NAME} 镜像构建成功!" + } + }' + """ + } + } + } +} \ No newline at end of file diff --git a/3.kubernetes/jenkins/pipline/pod.Jenkinsfile b/3.kubernetes/jenkins/pipline/pod.Jenkinsfile new file mode 100644 index 0000000..fba4b92 --- /dev/null +++ b/3.kubernetes/jenkins/pipline/pod.Jenkinsfile @@ -0,0 +1,100 @@ +pipeline { + agent { label '172.21.51.68'} + + options { + buildDiscarder(logRotator(numToKeepStr: '10')) + disableConcurrentBuilds() + timeout(time: 20, unit: 'MINUTES') + gitLabConnection('gitlab') + } + + environment { + IMAGE_REPO = "172.21.51.143:5000/demo/myblog" + DINGTALK_CREDS = credentials('dingTalk') + TAB_STR = "\n \n                    " + } + + stages { + stage('printenv') { + steps { + script{ + sh "git log --oneline -n 1 > gitlog.file" + env.GIT_LOG = readFile("gitlog.file").trim() + } + sh 'printenv' + } + } + stage('checkout') { + steps { + checkout scm + updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success') + script{ + env.BUILD_TASKS = env.STAGE_NAME + "√..." + env.TAB_STR + } + } + } + stage('build-image') { + steps { + retry(2) { sh 'docker build . -t ${IMAGE_REPO}:${GIT_COMMIT}'} + updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success') + script{ + env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR + } + } + } + stage('push-image') { + steps { + retry(2) { sh 'docker push ${IMAGE_REPO}:${GIT_COMMIT}'} + updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success') + script{ + env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR + } + } + } + stage('deploy') { + steps { + sh "sed -i 's#{{IMAGE_URL}}#${IMAGE_REPO}:${GIT_COMMIT}#g' manifests/*" + timeout(time: 1, unit: 'MINUTES') { + sh "kubectl apply -f manifests/" + } + updateGitlabCommitStatus(name: env.STAGE_NAME, state: 'success') + script{ + env.BUILD_TASKS += env.STAGE_NAME + "√..." + env.TAB_STR + } + } + } + } + post { + success { + echo 'Congratulations!' + sh """ + curl 'https://oapi.dingtalk.com/robot/send?access_token=${DINGTALK_CREDS_PSW}' \ + -H 'Content-Type: application/json' \ + -d '{ + "msgtype": "markdown", + "markdown": { + "title":"myblog", + "text": "😄👍 构建成功 👍😄 \n**项目名称**:luffy \n**Git log**: ${GIT_LOG} \n**构建分支**: ${BRANCH_NAME} \n**构建地址**:${RUN_DISPLAY_URL} \n**构建任务**:${BUILD_TASKS}" + } + }' + """ + } + failure { + echo 'Oh no!' + sh """ + curl 'https://oapi.dingtalk.com/robot/send?access_token=${DINGTALK_CREDS_PSW}' \ + -H 'Content-Type: application/json' \ + -d '{ + "msgtype": "markdown", + "markdown": { + "title":"myblog", + "text": "😖❌ 构建失败 ❌😖 \n**项目名称**:luffy \n**Git log**: ${GIT_LOG} \n**构建分支**: ${BRANCH_NAME} \n**构建地址**:${RUN_DISPLAY_URL} \n**构建任务**:${BUILD_TASKS}" + } + }' + """ + } + always { + echo 'I will always say Hello again!' + } + } +} \ No newline at end of file diff --git a/3.kubernetes/kubernetes-dashboard/dashboard-admin.yml b/3.kubernetes/kubernetes-dashboard/dashboard-admin.yml new file mode 100644 index 0000000..c5246f7 --- /dev/null +++ b/3.kubernetes/kubernetes-dashboard/dashboard-admin.yml @@ -0,0 +1,21 @@ +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: admin + annotations: + rbac.authorization.kubernetes.io/autoupdate: "true" +roleRef: + kind: ClusterRole + name: cluster-admin + apiGroup: rbac.authorization.k8s.io +subjects: +- kind: ServiceAccount + name: admin + namespace: kubernetes-dashboard + +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: admin + namespace: kubernetes-dashboard \ No newline at end of file diff --git a/3.kubernetes/kubernetes-dashboard/recommended.yaml b/3.kubernetes/kubernetes-dashboard/recommended.yaml new file mode 100644 index 0000000..6387754 --- /dev/null +++ b/3.kubernetes/kubernetes-dashboard/recommended.yaml @@ -0,0 +1,303 @@ +# Copyright 2017 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Namespace +metadata: + name: kubernetes-dashboard + +--- + +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + k8s-app: kubernetes-dashboard + name: kubernetes-dashboard + namespace: kubernetes-dashboard + +--- + +kind: Service +apiVersion: v1 +metadata: + labels: + k8s-app: kubernetes-dashboard + name: kubernetes-dashboard + namespace: kubernetes-dashboard +spec: + ports: + - port: 443 + targetPort: 8443 + selector: + k8s-app: kubernetes-dashboard + type: NodePort + +--- + +apiVersion: v1 +kind: Secret +metadata: + labels: + k8s-app: kubernetes-dashboard + name: kubernetes-dashboard-certs + namespace: kubernetes-dashboard +type: Opaque + +--- + +apiVersion: v1 +kind: Secret +metadata: + labels: + k8s-app: kubernetes-dashboard + name: kubernetes-dashboard-csrf + namespace: kubernetes-dashboard +type: Opaque +data: + csrf: "" + +--- + +apiVersion: v1 +kind: Secret +metadata: + labels: + k8s-app: kubernetes-dashboard + name: kubernetes-dashboard-key-holder + namespace: kubernetes-dashboard +type: Opaque + +--- + +kind: ConfigMap +apiVersion: v1 +metadata: + labels: + k8s-app: kubernetes-dashboard + name: kubernetes-dashboard-settings + namespace: kubernetes-dashboard + +--- + +kind: Role +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + labels: + k8s-app: kubernetes-dashboard + name: kubernetes-dashboard + namespace: kubernetes-dashboard +rules: + # Allow Dashboard to get, update and delete Dashboard exclusive secrets. + - apiGroups: [""] + resources: ["secrets"] + resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs", "kubernetes-dashboard-csrf"] + verbs: ["get", "update", "delete"] + # Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map. + - apiGroups: [""] + resources: ["configmaps"] + resourceNames: ["kubernetes-dashboard-settings"] + verbs: ["get", "update"] + # Allow Dashboard to get metrics. + - apiGroups: [""] + resources: ["services"] + resourceNames: ["heapster", "dashboard-metrics-scraper"] + verbs: ["proxy"] + - apiGroups: [""] + resources: ["services/proxy"] + resourceNames: ["heapster", "http:heapster:", "https:heapster:", "dashboard-metrics-scraper", "http:dashboard-metrics-scraper"] + verbs: ["get"] + +--- + +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + labels: + k8s-app: kubernetes-dashboard + name: kubernetes-dashboard +rules: + # Allow Metrics Scraper to get metrics from the Metrics server + - apiGroups: ["metrics.k8s.io"] + resources: ["pods", "nodes"] + verbs: ["get", "list", "watch"] + +--- + +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + labels: + k8s-app: kubernetes-dashboard + name: kubernetes-dashboard + namespace: kubernetes-dashboard +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: kubernetes-dashboard +subjects: + - kind: ServiceAccount + name: kubernetes-dashboard + namespace: kubernetes-dashboard + +--- + +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: kubernetes-dashboard +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: kubernetes-dashboard +subjects: + - kind: ServiceAccount + name: kubernetes-dashboard + namespace: kubernetes-dashboard + +--- + +kind: Deployment +apiVersion: apps/v1 +metadata: + labels: + k8s-app: kubernetes-dashboard + name: kubernetes-dashboard + namespace: kubernetes-dashboard +spec: + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + k8s-app: kubernetes-dashboard + template: + metadata: + labels: + k8s-app: kubernetes-dashboard + spec: + containers: + - name: kubernetes-dashboard + image: kubernetesui/dashboard:v2.2.0 + imagePullPolicy: Always + ports: + - containerPort: 8443 + protocol: TCP + args: + - --auto-generate-certificates + - --namespace=kubernetes-dashboard + # Uncomment the following line to manually specify Kubernetes API server Host + # If not specified, Dashboard will attempt to auto discover the API server and connect + # to it. Uncomment only if the default does not work. + # - --apiserver-host=http://my-address:port + volumeMounts: + - name: kubernetes-dashboard-certs + mountPath: /certs + # Create on-disk volume to store exec logs + - mountPath: /tmp + name: tmp-volume + livenessProbe: + httpGet: + scheme: HTTPS + path: / + port: 8443 + initialDelaySeconds: 30 + timeoutSeconds: 30 + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + runAsUser: 1001 + runAsGroup: 2001 + volumes: + - name: kubernetes-dashboard-certs + secret: + secretName: kubernetes-dashboard-certs + - name: tmp-volume + emptyDir: {} + serviceAccountName: kubernetes-dashboard + nodeSelector: + "kubernetes.io/os": linux + # Comment the following tolerations if Dashboard must not be deployed on master + tolerations: + - key: node-role.kubernetes.io/master + effect: NoSchedule + +--- + +kind: Service +apiVersion: v1 +metadata: + labels: + k8s-app: dashboard-metrics-scraper + name: dashboard-metrics-scraper + namespace: kubernetes-dashboard +spec: + ports: + - port: 8000 + targetPort: 8000 + selector: + k8s-app: dashboard-metrics-scraper + +--- + +kind: Deployment +apiVersion: apps/v1 +metadata: + labels: + k8s-app: dashboard-metrics-scraper + name: dashboard-metrics-scraper + namespace: kubernetes-dashboard +spec: + replicas: 1 + revisionHistoryLimit: 10 + selector: + matchLabels: + k8s-app: dashboard-metrics-scraper + template: + metadata: + labels: + k8s-app: dashboard-metrics-scraper + annotations: + seccomp.security.alpha.kubernetes.io/pod: 'runtime/default' + spec: + containers: + - name: dashboard-metrics-scraper + image: kubernetesui/metrics-scraper:v1.0.6 + ports: + - containerPort: 8000 + protocol: TCP + livenessProbe: + httpGet: + scheme: HTTP + path: / + port: 8000 + initialDelaySeconds: 30 + timeoutSeconds: 30 + volumeMounts: + - mountPath: /tmp + name: tmp-volume + securityContext: + allowPrivilegeEscalation: false + readOnlyRootFilesystem: true + runAsUser: 1001 + runAsGroup: 2001 + serviceAccountName: kubernetes-dashboard + nodeSelector: + "kubernetes.io/os": linux + # Comment the following tolerations if Dashboard must not be deployed on master + tolerations: + - key: node-role.kubernetes.io/master + effect: NoSchedule + volumes: + - name: tmp-volume + emptyDir: {} diff --git a/3.kubernetes/kubesphere/v3.2.1/cluster-configuration.yaml b/3.kubernetes/kubesphere/v3.2.1/cluster-configuration.yaml new file mode 100644 index 0000000..5fbd1a5 --- /dev/null +++ b/3.kubernetes/kubesphere/v3.2.1/cluster-configuration.yaml @@ -0,0 +1,174 @@ +--- +apiVersion: installer.kubesphere.io/v1alpha1 +kind: ClusterConfiguration +metadata: + name: ks-installer + namespace: kubesphere-system + labels: + version: v3.2.1 +spec: + persistence: + storageClass: "" # If there is no default StorageClass in your cluster, you need to specify an existing StorageClass here. + authentication: + jwtSecret: "" # Keep the jwtSecret consistent with the Host Cluster. Retrieve the jwtSecret by executing "kubectl -n kubesphere-system get cm kubesphere-config -o yaml | grep -v "apiVersion" | grep jwtSecret" on the Host Cluster. + local_registry: "" # Add your private registry address if it is needed. + # dev_tag: "" # Add your kubesphere image tag you want to install, by default it's same as ks-install release version. + etcd: + monitoring: false # Enable or disable etcd monitoring dashboard installation. You have to create a Secret for etcd before you enable it. + endpointIps: localhost # etcd cluster EndpointIps. It can be a bunch of IPs here. + port: 2379 # etcd port. + tlsEnable: true + common: + core: + console: + enableMultiLogin: true # Enable or disable simultaneous logins. It allows different users to log in with the same account at the same time. + port: 30880 + type: NodePort + # apiserver: # Enlarge the apiserver and controller manager's resource requests and limits for the large cluster + # resources: {} + # controllerManager: + # resources: {} + redis: + enabled: false + volumeSize: 2Gi # Redis PVC size. + openldap: + enabled: false + volumeSize: 2Gi # openldap PVC size. + minio: + volumeSize: 20Gi # Minio PVC size. + monitoring: + # type: external # Whether to specify the external prometheus stack, and need to modify the endpoint at the next line. + endpoint: http://prometheus-operated.kubesphere-monitoring-system.svc:9090 # Prometheus endpoint to get metrics data. + GPUMonitoring: # Enable or disable the GPU-related metrics. If you enable this switch but have no GPU resources, Kubesphere will set it to zero. + enabled: false + gpu: # Install GPUKinds. The default GPU kind is nvidia.com/gpu. Other GPU kinds can be added here according to your needs. + kinds: + - resourceName: "nvidia.com/gpu" + resourceType: "GPU" + default: true + es: # Storage backend for logging, events and auditing. + # master: + # volumeSize: 4Gi # The volume size of Elasticsearch master nodes. + # replicas: 1 # The total number of master nodes. Even numbers are not allowed. + # resources: {} + # data: + # volumeSize: 20Gi # The volume size of Elasticsearch data nodes. + # replicas: 1 # The total number of data nodes. + # resources: {} + logMaxAge: 7 # Log retention time in built-in Elasticsearch. It is 7 days by default. + elkPrefix: logstash # The string making up index names. The index name will be formatted as ks--log. + basicAuth: + enabled: false + username: "" + password: "" + externalElasticsearchUrl: "" + externalElasticsearchPort: "" + alerting: # (CPU: 0.1 Core, Memory: 100 MiB) It enables users to customize alerting policies to send messages to receivers in time with different time intervals and alerting levels to choose from. + enabled: false # Enable or disable the KubeSphere Alerting System. + # thanosruler: + # replicas: 1 + # resources: {} + auditing: # Provide a security-relevant chronological set of records,recording the sequence of activities happening on the platform, initiated by different tenants. + enabled: false # Enable or disable the KubeSphere Auditing Log System. + # operator: + # resources: {} + # webhook: + # resources: {} + devops: # (CPU: 0.47 Core, Memory: 8.6 G) Provide an out-of-the-box CI/CD system based on Jenkins, and automated workflow tools including Source-to-Image & Binary-to-Image. + enabled: false # Enable or disable the KubeSphere DevOps System. + # resources: {} + jenkinsMemoryLim: 2Gi # Jenkins memory limit. + jenkinsMemoryReq: 1500Mi # Jenkins memory request. + jenkinsVolumeSize: 8Gi # Jenkins volume size. + jenkinsJavaOpts_Xms: 512m # The following three fields are JVM parameters. + jenkinsJavaOpts_Xmx: 512m + jenkinsJavaOpts_MaxRAM: 2g + events: # Provide a graphical web console for Kubernetes Events exporting, filtering and alerting in multi-tenant Kubernetes clusters. + enabled: false # Enable or disable the KubeSphere Events System. + # operator: + # resources: {} + # exporter: + # resources: {} + # ruler: + # enabled: true + # replicas: 2 + # resources: {} + logging: # (CPU: 57 m, Memory: 2.76 G) Flexible logging functions are provided for log query, collection and management in a unified console. Additional log collectors can be added, such as Elasticsearch, Kafka and Fluentd. + enabled: false # Enable or disable the KubeSphere Logging System. + containerruntime: docker + logsidecar: + enabled: true + replicas: 2 + # resources: {} + metrics_server: # (CPU: 56 m, Memory: 44.35 MiB) It enables HPA (Horizontal Pod Autoscaler). + enabled: false # Enable or disable metrics-server. + monitoring: + storageClass: "" # If there is an independent StorageClass you need for Prometheus, you can specify it here. The default StorageClass is used by default. + # kube_rbac_proxy: + # resources: {} + # kube_state_metrics: + # resources: {} + # prometheus: + # replicas: 1 # Prometheus replicas are responsible for monitoring different segments of data source and providing high availability. + # volumeSize: 20Gi # Prometheus PVC size. + # resources: {} + # operator: + # resources: {} + # adapter: + # resources: {} + # node_exporter: + # resources: {} + # alertmanager: + # replicas: 1 # AlertManager Replicas. + # resources: {} + # notification_manager: + # resources: {} + # operator: + # resources: {} + # proxy: + # resources: {} + gpu: # GPU monitoring-related plug-in installation. + nvidia_dcgm_exporter: # Ensure that gpu resources on your hosts can be used normally, otherwise this plug-in will not work properly. + enabled: false # Check whether the labels on the GPU hosts contain "nvidia.com/gpu.present=true" to ensure that the DCGM pod is scheduled to these nodes. + # resources: {} + multicluster: + clusterRole: none # host | member | none # You can install a solo cluster, or specify it as the Host or Member Cluster. + network: + networkpolicy: # Network policies allow network isolation within the same cluster, which means firewalls can be set up between certain instances (Pods). + # Make sure that the CNI network plugin used by the cluster supports NetworkPolicy. There are a number of CNI network plugins that support NetworkPolicy, including Calico, Cilium, Kube-router, Romana and Weave Net. + enabled: false # Enable or disable network policies. + ippool: # Use Pod IP Pools to manage the Pod network address space. Pods to be created can be assigned IP addresses from a Pod IP Pool. + type: none # Specify "calico" for this field if Calico is used as your CNI plugin. "none" means that Pod IP Pools are disabled. + topology: # Use Service Topology to view Service-to-Service communication based on Weave Scope. + type: none # Specify "weave-scope" for this field to enable Service Topology. "none" means that Service Topology is disabled. + openpitrix: # An App Store that is accessible to all platform tenants. You can use it to manage apps across their entire lifecycle. + store: + enabled: false # Enable or disable the KubeSphere App Store. + servicemesh: # (0.3 Core, 300 MiB) Provide fine-grained traffic management, observability and tracing, and visualized traffic topology. + enabled: false # Base component (pilot). Enable or disable KubeSphere Service Mesh (Istio-based). + kubeedge: # Add edge nodes to your cluster and deploy workloads on edge nodes. + enabled: false # Enable or disable KubeEdge. + cloudCore: + nodeSelector: {"node-role.kubernetes.io/worker": ""} + tolerations: [] + cloudhubPort: "10000" + cloudhubQuicPort: "10001" + cloudhubHttpsPort: "10002" + cloudstreamPort: "10003" + tunnelPort: "10004" + cloudHub: + advertiseAddress: # At least a public IP address or an IP address which can be accessed by edge nodes must be provided. + - "" # Note that once KubeEdge is enabled, CloudCore will malfunction if the address is not provided. + nodeLimit: "100" + service: + cloudhubNodePort: "30000" + cloudhubQuicNodePort: "30001" + cloudhubHttpsNodePort: "30002" + cloudstreamNodePort: "30003" + tunnelNodePort: "30004" + edgeWatcher: + nodeSelector: {"node-role.kubernetes.io/worker": ""} + tolerations: [] + edgeWatcherAgent: + nodeSelector: {"node-role.kubernetes.io/worker": ""} + tolerations: [] diff --git a/3.kubernetes/kubesphere/v3.2.1/kubesphere-installer.yaml b/3.kubernetes/kubesphere/v3.2.1/kubesphere-installer.yaml new file mode 100644 index 0000000..536cc32 --- /dev/null +++ b/3.kubernetes/kubesphere/v3.2.1/kubesphere-installer.yaml @@ -0,0 +1,307 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: clusterconfigurations.installer.kubesphere.io +spec: + group: installer.kubesphere.io + versions: + - name: v1alpha1 + served: true + storage: true + schema: + openAPIV3Schema: + type: object + properties: + spec: + type: object + x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-preserve-unknown-fields: true + scope: Namespaced + names: + plural: clusterconfigurations + singular: clusterconfiguration + kind: ClusterConfiguration + shortNames: + - cc + +--- +apiVersion: v1 +kind: Namespace +metadata: + name: kubesphere-system + +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: ks-installer + namespace: kubesphere-system + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: ks-installer +rules: +- apiGroups: + - "" + resources: + - '*' + verbs: + - '*' +- apiGroups: + - apps + resources: + - '*' + verbs: + - '*' +- apiGroups: + - extensions + resources: + - '*' + verbs: + - '*' +- apiGroups: + - batch + resources: + - '*' + verbs: + - '*' +- apiGroups: + - rbac.authorization.k8s.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - apiregistration.k8s.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - apiextensions.k8s.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - tenant.kubesphere.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - certificates.k8s.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - devops.kubesphere.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - monitoring.coreos.com + resources: + - '*' + verbs: + - '*' +- apiGroups: + - logging.kubesphere.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - jaegertracing.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - storage.k8s.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - admissionregistration.k8s.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - policy + resources: + - '*' + verbs: + - '*' +- apiGroups: + - autoscaling + resources: + - '*' + verbs: + - '*' +- apiGroups: + - networking.istio.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - config.istio.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - iam.kubesphere.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - notification.kubesphere.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - auditing.kubesphere.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - events.kubesphere.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - core.kubefed.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - installer.kubesphere.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - storage.kubesphere.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - security.istio.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - monitoring.kiali.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - kiali.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - networking.k8s.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - kubeedge.kubesphere.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - types.kubefed.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - monitoring.kubesphere.io + resources: + - '*' + verbs: + - '*' +- apiGroups: + - application.kubesphere.io + resources: + - '*' + verbs: + - '*' + + +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: ks-installer +subjects: +- kind: ServiceAccount + name: ks-installer + namespace: kubesphere-system +roleRef: + kind: ClusterRole + name: ks-installer + apiGroup: rbac.authorization.k8s.io + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ks-installer + namespace: kubesphere-system + labels: + app: ks-install +spec: + replicas: 1 + selector: + matchLabels: + app: ks-install + template: + metadata: + labels: + app: ks-install + spec: + serviceAccountName: ks-installer + containers: + - name: installer + image: kubesphere/ks-installer:v3.2.1 + imagePullPolicy: "Always" + resources: + limits: + cpu: "1" + memory: 1Gi + requests: + cpu: 20m + memory: 100Mi + volumeMounts: + - mountPath: /etc/localtime + name: host-time + readOnly: true + volumes: + - hostPath: + path: /etc/localtime + type: "" + name: host-time diff --git a/3.kubernetes/kubesphere/v3.2.1/svc.yml b/3.kubernetes/kubesphere/v3.2.1/svc.yml new file mode 100644 index 0000000..e3baeae --- /dev/null +++ b/3.kubernetes/kubesphere/v3.2.1/svc.yml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: ks-install-svc + namespace: test +spec: + ports: + - port: 80 + protocol: TCP + targetPort: 8000 + selector: + app: ks-install + type: ClusterIP diff --git a/3.kubernetes/limitRange/cpu-limit.yml b/3.kubernetes/limitRange/cpu-limit.yml new file mode 100644 index 0000000..8a1818a --- /dev/null +++ b/3.kubernetes/limitRange/cpu-limit.yml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: LimitRange +metadata: + name: cpu-limit-range + namespace: test +spec: + limits: + - default: + cpu: 200m + defaultRequest: + cpu: 100m + type: Container \ No newline at end of file diff --git a/3.kubernetes/limitRange/mem-limit.yml b/3.kubernetes/limitRange/mem-limit.yml new file mode 100644 index 0000000..8608a8a --- /dev/null +++ b/3.kubernetes/limitRange/mem-limit.yml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: LimitRange +metadata: + name: mem-limit-range + namespace: test +spec: + limits: + - default: + memory: 1024Mi + defaultRequest: + memory: 512Mi + type: Container \ No newline at end of file diff --git a/3.kubernetes/one-pod/pod-with-volume.yml b/3.kubernetes/one-pod/pod-with-volume.yml new file mode 100644 index 0000000..400dd77 --- /dev/null +++ b/3.kubernetes/one-pod/pod-with-volume.yml @@ -0,0 +1,39 @@ +apiVersion: v1 +kind: Pod +metadata: + name: cmdb + namespace: test + labels: + component: cmdb +spec: + volumes: + - name: mysql-data + hostPath: + path: /opt/mysql/data + nodeSelector: # 使用节点选择器将Pod调度到指定label的节点 + component: mysql + containers: + - name: cmdb + image: harbor.opsbase.cn/public/cmdb:latest + env: + - name: MYSQL_HOST # 指定root用户的用户名 + value: "127.0.0.1" + - name: MYSQL_PASSWD + value: "123456" + ports: + - containerPort: 8000 + - name: mysql + image: mysql:5.7 + args: + - --character-set-server=utf8mb4 + - --collation-server=utf8mb4_unicode_ci + ports: + - containerPort: 3306 + env: + - name: MYSQL_ROOT_PASSWORD + value: "123456" + - name: MYSQL_DATABASE + value: "cmdb" + volumeMounts: + - name: mysql-data + mountPath: /var/lib/mysql diff --git a/3.kubernetes/one-pod/sshd-pod.yml b/3.kubernetes/one-pod/sshd-pod.yml new file mode 100644 index 0000000..5a0c3a4 --- /dev/null +++ b/3.kubernetes/one-pod/sshd-pod.yml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Pod +metadata: + name: sshd-demo + namespace: test +spec: + nodeSelector: # 使用节点选择器将Pod调度到指定label的节点 + standalone: "true" + containers: + - name: sshd-demo + image: lghost/sshd:v0.1 + ports: + - containerPort: 22 \ No newline at end of file diff --git a/3.kubernetes/pod-lifecycle/pod-lifecycle.yml b/3.kubernetes/pod-lifecycle/pod-lifecycle.yml new file mode 100644 index 0000000..d9bb16c --- /dev/null +++ b/3.kubernetes/pod-lifecycle/pod-lifecycle.yml @@ -0,0 +1,40 @@ +apiVersion: v1 +kind: Pod +metadata: + name: pod-lifecycle + namespace: test + labels: + component: pod-lifecycless +spec: + initContainers: + - name: init + image: busybox + command: ['sh', '-c', 'echo $(date +%s): INIT >> /loap/timing'] + volumeMounts: + - mountPath: /loap + name: timing + containers: + - name: main + image: busybox + command: ['sh', '-c', 'echo $(date +%s): START >> /loap/timing; +sleep 10; echo $(date +%s): END >> /loap/timing;'] + volumeMounts: + - mountPath: /loap + name: timing + livenessProbe: + exec: + command: ['sh', '-c', 'echo $(date +%s): LIVENESS >> /loap/timing'] + readinessProbe: + exec: + command: ['sh', '-c', 'echo $(date +%s): READINESS >> /loap/timing'] + lifecycle: + postStart: + exec: + command: ['sh', '-c', 'echo $(date +%s): POST-START >> /loap/timing'] + preStop: + exec: + command: ['sh', '-c', 'echo $(date +%s): PRE-STOP >> /loap/timing'] + volumes: + - name: timing + hostPath: + path: /tmp/loap diff --git a/3.kubernetes/rbac/demo-admin-rbac.yaml b/3.kubernetes/rbac/demo-admin-rbac.yaml new file mode 100644 index 0000000..1fba9ec --- /dev/null +++ b/3.kubernetes/rbac/demo-admin-rbac.yaml @@ -0,0 +1,30 @@ +# 针对demo 命名空间授权 +apiVersion: v1 +kind: ServiceAccount +metadata: + name: pre-admin + namespace: demo +--- +kind: Role +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + namespace: demo + name: pods-reader-writer +rules: + - apiGroups: [""] # "" indicates the core API group + resources: ["*"] + verbs: ["*"] +--- +kind: RoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: pods-reader-writer + namespace: demo +subjects: + - kind: ServiceAccount #这里可以是User,Group,ServiceAccount + name: demo-pods-admin + namespace: demo +roleRef: + kind: Role #这里可以是Role或者ClusterRole,若是ClusterRole,则权限也仅限于rolebinding的内部 + name: pods-reader-writer + apiGroup: rbac.authorization.k8s.io diff --git a/3.kubernetes/rbac/demo-limit.yml b/3.kubernetes/rbac/demo-limit.yml new file mode 100644 index 0000000..5564222 --- /dev/null +++ b/3.kubernetes/rbac/demo-limit.yml @@ -0,0 +1,22 @@ +apiVersion: v1 +kind: LimitRange +metadata: + name: mem-limit-range + namespace: demo +spec: + limits: + - default: + memory: 512Mi + defaultRequest: + memory: 256Mi + type: Container +--- +apiVersion: v1 +kind: Pod +metadata: + name: default-mem-demo + namespace: demo +spec: + containers: + - name: default-mem-demo + image: nginx:alpine diff --git a/3.kubernetes/secret/cmdb-secret.yml b/3.kubernetes/secret/cmdb-secret.yml new file mode 100644 index 0000000..bdd4d0a --- /dev/null +++ b/3.kubernetes/secret/cmdb-secret.yml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Secret +metadata: + name: mysql-cmdb + namespace: test +type: Opaque +data: + DB_USER: cm9vdA== + DB_PASSWORD: MTIzNDU2 + +# 注意加-n参数,echo -n 123456|base64 \ No newline at end of file diff --git a/3.kubernetes/secret/secret.yml b/3.kubernetes/secret/secret.yml new file mode 100644 index 0000000..7ac3a46 --- /dev/null +++ b/3.kubernetes/secret/secret.yml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Secret +metadata: + name: nacos +type: Opaque +data: + nacosPwd: elhJd2FhVGk0N1Bq + +# 注意加-n参数,echo -n 123456|base64 \ No newline at end of file diff --git a/3.kubernetes/services/svc-cmdb.yml b/3.kubernetes/services/svc-cmdb.yml new file mode 100644 index 0000000..8ddd121 --- /dev/null +++ b/3.kubernetes/services/svc-cmdb.yml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: cmdb-svc + namespace: test +spec: + ports: + - port: 80 + protocol: TCP + targetPort: 8000 + selector: + app: cmdb + type: ClusterIP \ No newline at end of file diff --git a/3.kubernetes/services/svc-myblog.yml b/3.kubernetes/services/svc-myblog.yml new file mode 100644 index 0000000..268a526 --- /dev/null +++ b/3.kubernetes/services/svc-myblog.yml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: myblog + namespace: test +spec: + ports: + - port: 80 + protocol: TCP + targetPort: 80 + selector: + app: myblog + type: ClusterIP \ No newline at end of file diff --git a/3.kubernetes/storage/nfs-pv.yml b/3.kubernetes/storage/nfs-pv.yml new file mode 100644 index 0000000..835bc4d --- /dev/null +++ b/3.kubernetes/storage/nfs-pv.yml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: nfs-pv + namespace: test +spec: + capacity: + storage: 50Gi + accessModes: + - ReadWriteMany + persistentVolumeReclaimPolicy: Retain + nfs: + path: /opt/data/nfs + server: 66.94.121.23 \ No newline at end of file diff --git a/3.kubernetes/storage/nfs-pvc.yml b/3.kubernetes/storage/nfs-pvc.yml new file mode 100644 index 0000000..a9f0661 --- /dev/null +++ b/3.kubernetes/storage/nfs-pvc.yml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: nfs-pvc + namespace: test +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 2Gi \ No newline at end of file diff --git a/3.kubernetes/storage/nginx-nfs.yml b/3.kubernetes/storage/nginx-nfs.yml new file mode 100644 index 0000000..59231bc --- /dev/null +++ b/3.kubernetes/storage/nginx-nfs.yml @@ -0,0 +1,30 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: # metadata是该资源的元数据,name是必须的元数据项 + name: nginx-nfs-test + namespace: test # 指定命名空间 + +spec: # spec部分是该Deployment的规则说明 + replicas: 2 + selector: + matchLabels: + app: nginx + template: # template定义Pod的模板,这是配置的重要部分 + metadata: # 定义Pod的元数据,至少要顶一个label,label的key和value可以任意指定 + labels: + app: nginx + spec: # spec描述的是Pod的规则,此部分定义pod中每一个容器的属性,name和image是必需的 + containers: + - name: nginx + image: nginx:alpine # 镜像;openresty/openresty or nginx:alpine + imagePullPolicy: IfNotPresent + ports: + - containerPort: 80 + volumeMounts: # 挂载容器中的目录到pvc nfs中的目录 + - name: www + mountPath: /usr/share/nginx/html + volumes: + - name: www + persistentVolumeClaim: # 指定pvc资源 + claimName: nfs-pvc + \ No newline at end of file diff --git a/3.kubernetes/storageClass/nfs-nginx-nginx-pvc.yml b/3.kubernetes/storageClass/nfs-nginx-nginx-pvc.yml new file mode 100644 index 0000000..81d234d --- /dev/null +++ b/3.kubernetes/storageClass/nfs-nginx-nginx-pvc.yml @@ -0,0 +1,55 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nginx-deployment-pvc +spec: + replicas: 2 + selector: + matchLabels: + app: nginx + template: + metadata: + labels: + app: nginx + spec: + containers: + - name: nginx + image: nginx + volumeMounts: + - name: wwwroot + mountPath: /usr/share/nginx/html + ports: + - containerPort: 80 + volumes: + - name: wwwroot + persistentVolumeClaim: + claimName: nginx-pvc + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: nginx-pvc + # annotations: # 注释使用默认 + # volume.beta.kubernetes.io/storage-class: "nfs-storage" +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 5Gi + +--- +apiVersion: v1 +kind: Service +metadata: + name: nginx-svc +spec: + selector: + app: nginx + ports: + - name: http80 + port: 80 + protocol: TCP + targetPort: 80 + type: ClusterIP diff --git a/3.kubernetes/storageClass/nfs-nginx-pvc-statefulset.yml b/3.kubernetes/storageClass/nfs-nginx-pvc-statefulset.yml new file mode 100644 index 0000000..04138c6 --- /dev/null +++ b/3.kubernetes/storageClass/nfs-nginx-pvc-statefulset.yml @@ -0,0 +1,49 @@ +apiVersion: apps/v1 +kind: StatefulSet # 每个pod申请一个独立的pvc资源 +metadata: + name: nginx-nfs-deployment + labels: + app: nginx-nfs-deployment +spec: + replicas: 1 + serviceName: nginx-svc + template: + metadata: + name: nginx-nfs-deployment + labels: + app: nginx-nfs-deployment + spec: + containers: + - name: nginx-nfs-deployment + image: bitnami/nginx:1.23-debian-11 + imagePullPolicy: IfNotPresent + ports: + - containerPort: 80 + volumeMounts: + - mountPath: /usr/share/nginx/html/ + name: nginxvolume + restartPolicy: Always + volumeClaimTemplates: + - metadata: + name: nginxvolume + annotations: + volume.beta.kubernetes.io/storage-class: "nfs-storage" + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi + selector: + matchLabels: + app: nginx-nfs-deployment +--- +apiVersion: v1 +kind: Service +metadata: + name: nginx-svc +spec: + selector: + app: nginx-nfs-deployment + ports: + - port: 80 diff --git a/3.kubernetes/storageClass/nfs-provisioner.yml b/3.kubernetes/storageClass/nfs-provisioner.yml new file mode 100644 index 0000000..0260053 --- /dev/null +++ b/3.kubernetes/storageClass/nfs-provisioner.yml @@ -0,0 +1,114 @@ +--- +kind: StorageClass +apiVersion: storage.k8s.io/v1 +metadata: + annotations: + storageclass.kubernetes.io/is-default-class: "false" # 是否设置为默认sc + name: nfs-storage +provisioner: nfs-provisioner +volumeBindingMode: Immediate +reclaimPolicy: Delete + +--- +kind: Deployment +apiVersion: apps/v1 +metadata: + name: nfs-client-provisioner +spec: + replicas: 1 + selector: + matchLabels: + app: nfs-client-provisioner + strategy: + type: Recreate + template: + metadata: + labels: + app: nfs-client-provisioner + spec: + serviceAccountName: nfs-client-provisioner + containers: + - name: nfs-client-provisioner + image: registry.cn-beijing.aliyuncs.com/mydlq/nfs-subdir-external-provisioner:v4.0.0 # quay.io/external_storage/nfs-client-provisioner:latest + volumeMounts: + - name: nfs-client-root + mountPath: /persistentvolumes + env: + - name: PROVISIONER_NAME + value: nfs-provisioner # 和Storage中provisioner保持一致便可 + - name: NFS_SERVER + value: 66.94.121.23 # nfs服务器地址 + - name: NFS_PATH + value: /opt/data/nfs # 共享存储目录 + volumes: + - name: nfs-client-root + nfs: + server: 66.94.121.23 + path: /opt/data/nfs + +--- # rbac授权 +apiVersion: v1 +kind: ServiceAccount +metadata: + name: nfs-client-provisioner + namespace: default +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: nfs-client-provisioner-runner +rules: + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["persistentvolumes"] + verbs: ["get", "list", "watch", "create", "delete"] + - apiGroups: [""] + resources: ["persistentvolumeclaims"] + verbs: ["get", "list", "watch", "update"] + - apiGroups: ["storage.k8s.io"] + resources: ["storageclasses"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["events"] + verbs: ["create", "update", "patch"] +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: run-nfs-client-provisioner +subjects: + - kind: ServiceAccount + name: nfs-client-provisioner + + namespace: default +roleRef: + kind: ClusterRole + name: nfs-client-provisioner-runner + apiGroup: rbac.authorization.k8s.io +--- +kind: Role +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: leader-locking-nfs-client-provisioner + namespace: default +rules: + - apiGroups: [""] + resources: ["endpoints"] + verbs: ["get", "list", "watch", "create", "update", "patch"] +--- +kind: RoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: leader-locking-nfs-client-provisioner + namespace: default +subjects: + - kind: ServiceAccount + name: nfs-client-provisioner + + namespace: default +roleRef: + kind: Role + name: leader-locking-nfs-client-provisioner + apiGroup: rbac.authorization.k8s.io diff --git a/3.kubernetes/storageClass/nfs-pvc-1g-test.yml b/3.kubernetes/storageClass/nfs-pvc-1g-test.yml new file mode 100644 index 0000000..382be69 --- /dev/null +++ b/3.kubernetes/storageClass/nfs-pvc-1g-test.yml @@ -0,0 +1,13 @@ +kind: PersistentVolumeClaim # 测试pvc申请 +apiVersion: v1 +metadata: + name: test-nfs-pvc + annotations: + volume.beta.kubernetes.io/storage-class: "nfs-storage" +spec: + storageClassName: "nfs-storage" + accessModes: + - ReadWriteMany # 多读写 + resources: + requests: + storage: 1Gi diff --git a/3.kubernetes/two-pod/cmdb.yml b/3.kubernetes/two-pod/cmdb.yml new file mode 100644 index 0000000..cffdb80 --- /dev/null +++ b/3.kubernetes/two-pod/cmdb.yml @@ -0,0 +1,42 @@ +apiVersion: v1 +kind: Pod +metadata: + name: cmdb + namespace: test + labels: + component: cmdb +spec: + containers: + - name: cmdb + image: harbor.opsbase.cn/public/cmdb:latest + imagePullPolicy: IfNotPresent + env: + - name: DB_HOST # 指定root用户的用户名 + value: "66.94.125.73" + - name: DB_PASSWORD + value: "123456" + ports: + - containerPort: 8000 + resources: + requests: + memory: 512Mi + cpu: 50m + limits: + memory: 2000Mi + cpu: 100m + livenessProbe: + httpGet: + path: /prometheus/metrics + port: 8000 + scheme: HTTP + initialDelaySeconds: 60 # 容器启动后第一次执行探测是需要等待多少秒 + periodSeconds: 15 # 执行探测的频率 + timeoutSeconds: 2 # 探测超时时间 + readinessProbe: + httpGet: + path: /prometheus/metrics + port: 8000 + scheme: HTTP + initialDelaySeconds: 10 + timeoutSeconds: 2 + periodSeconds: 15 \ No newline at end of file diff --git a/3.kubernetes/two-pod/myblog.yml b/3.kubernetes/two-pod/myblog.yml new file mode 100644 index 0000000..d433ce7 --- /dev/null +++ b/3.kubernetes/two-pod/myblog.yml @@ -0,0 +1,42 @@ +apiVersion: v1 +kind: Pod +metadata: + name: myblog + namespace: test + labels: + component: myblog +spec: + containers: + - name: myblog + image: harbor.opsbase.cn/public/myblog:v1 + imagePullPolicy: IfNotPresent + env: + - name: MYSQL_HOST # 指定root用户的用户名 + value: "66.94.125.73" + - name: MYSQL_PASSWD + value: "123456" + ports: + - containerPort: 8002 + resources: + requests: + memory: 100Mi + cpu: 50m + limits: + memory: 500Mi + cpu: 100m + livenessProbe: + httpGet: + path: /blog/index/ + port: 8002 + scheme: HTTP + initialDelaySeconds: 10 # 容器启动后第一次执行探测是需要等待多少秒 + periodSeconds: 15 # 执行探测的频率 + timeoutSeconds: 2 # 探测超时时间 + readinessProbe: + httpGet: + path: /blog/index/ + port: 8002 + scheme: HTTP + initialDelaySeconds: 10 + timeoutSeconds: 2 + periodSeconds: 15 \ No newline at end of file diff --git a/3.kubernetes/two-pod/mysql.yml b/3.kubernetes/two-pod/mysql.yml new file mode 100644 index 0000000..16a7ad1 --- /dev/null +++ b/3.kubernetes/two-pod/mysql.yml @@ -0,0 +1,48 @@ +apiVersion: v1 +kind: Pod +metadata: + name: mysql + namespace: test + labels: + component: mysql +spec: + hostNetwork: true # 声明pod的网络模式为host模式,效果同docker run --net=host + volumes: + - name: mysql-data + hostPath: + path: /opt/mysql/data + nodeSelector: # 使用节点选择器将Pod调度到指定label的节点 + component: mysql + containers: + - name: mysql + image: mysql:5.7 + args: + - --character-set-server=utf8mb4 + - --collation-server=utf8mb4_unicode_ci + ports: + - containerPort: 3306 + env: + - name: MYSQL_ROOT_PASSWORD + value: "opsbase.cn" + - name: MYSQL_DATABASE + value: "cmdb" + resources: + requests: + memory: 2000Mi + cpu: 800m + limits: + memory: 4Gi + cpu: 2 + readinessProbe: + tcpSocket: + port: 3306 + initialDelaySeconds: 5 + periodSeconds: 10 + livenessProbe: + tcpSocket: + port: 3306 + initialDelaySeconds: 15 + periodSeconds: 20 + volumeMounts: + - name: mysql-data + mountPath: /var/lib/mysql \ No newline at end of file diff --git a/3.kubernetes/two-pod/test.md b/3.kubernetes/two-pod/test.md new file mode 100644 index 0000000..e69de29 diff --git a/4.monitor/consul.yml b/4.monitor/consul.yml new file mode 100644 index 0000000..f928295 --- /dev/null +++ b/4.monitor/consul.yml @@ -0,0 +1,44 @@ +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: consul-data-pvc + namespace: monitor +spec: + accessModes: + - ReadWriteMany + storageClassName: nfs-provisioner # 您需要提前定义的NFS存储类 + resources: + requests: + storage: 10Gi # 根据您的存储需求进行调整 + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: consul + namespace: monitor +spec: + replicas: 1 # 根据您的需求进行调整 + selector: + matchLabels: + app: consul + template: + metadata: + labels: + app: consul + spec: + containers: + - name: consul + image: consul:1.15 + ports: + - containerPort: 8500 + volumeMounts: + - name: consul-data + mountPath: /consul/data + volumes: + - name: consul-data + persistentVolumeClaim: + claimName: consul-data-pvc + # namespace: monitor + diff --git a/4.monitor/grafana/granfna.yml b/4.monitor/grafana/granfna.yml new file mode 100644 index 0000000..ab18091 --- /dev/null +++ b/4.monitor/grafana/granfna.yml @@ -0,0 +1,66 @@ +kind: Deployment +apiVersion: apps/v1 +metadata: + labels: + app: grafana + name: grafana + namespace: monitor +spec: + replicas: 1 + selector: + matchLabels: + app: grafana + template: + metadata: + labels: + app: grafana + spec: + nodeSelector: + node-type: grafana + securityContext: + runAsNonRoot: true + runAsUser: 10555 + fsGroup: 10555 + containers: + - name: grafana + image: grafana/grafana:latest + imagePullPolicy: IfNotPresent + env: + - name: GF_AUTH_BASIC_ENABLED + value: "true" + - name: GF_AUTH_ANONYMOUS_ENABLED + value: "false" + readinessProbe: + httpGet: + path: /login + port: 3000 + volumeMounts: + - mountPath: /var/lib/grafana + name: monitor-data + ports: + - containerPort: 3000 + protocol: TCP + volumes: + - name: monitor-data + persistentVolumeClaim: + claimName: grafana-data-pvc + + # emptyDir: {} + + # hostPath: + # path: /data/grafana + # type: DirectoryOrCreate +--- +kind: Service +apiVersion: v1 +metadata: + labels: + app: grafana + name: grafana-service + namespace: monitor +spec: + ports: + - port: 3000 + targetPort: 3000 + selector: + app: grafana \ No newline at end of file diff --git a/4.monitor/grafana/readme.md b/4.monitor/grafana/readme.md new file mode 100644 index 0000000..7292f7e --- /dev/null +++ b/4.monitor/grafana/readme.md @@ -0,0 +1,15 @@ +# 命令 + +```bash +# 指定lab +kubectl label nodes k8s-1 node-type=grafana +``` + +修改 Deployment 配置,添加 nodeSelector 字段: +``` +spec: + template: + spec: + nodeSelector: + node-type: grafana +``` \ No newline at end of file diff --git a/4.monitor/node-exporter.yml b/4.monitor/node-exporter.yml new file mode 100644 index 0000000..84b643b --- /dev/null +++ b/4.monitor/node-exporter.yml @@ -0,0 +1,42 @@ +apiVersion: apps/v1 +kind: DaemonSet +metadata: + name: node-exporter + namespace: monitor + labels: + app: node-exporter +spec: + selector: + matchLabels: + app: node-exporter + template: + metadata: + labels: + app: node-exporter + spec: + containers: + - name: node-exporter + image: prom/node-exporter + ports: + - containerPort: 9100 + name: metrics + volumeMounts: + - name: proc + mountPath: /host/proc + readOnly: true + - name: sys + mountPath: /host/sys + readOnly: true + - name: root + mountPath: /rootfs + readOnly: true + volumes: + - name: proc + hostPath: + path: /proc + - name: sys + hostPath: + path: /sys + - name: root + hostPath: + path: / \ No newline at end of file diff --git a/4.monitor/prometheus/1.rbac.yml b/4.monitor/prometheus/1.rbac.yml new file mode 100644 index 0000000..e499855 --- /dev/null +++ b/4.monitor/prometheus/1.rbac.yml @@ -0,0 +1,55 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: prometheus + namespace: monitor +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: prometheus +rules: +- apiGroups: + - "" + resources: + - nodes + - services + - endpoints + - pods + - nodes/proxy + verbs: + - get + - list + - watch +- apiGroups: + - "extensions" + resources: + - ingresses + verbs: + - get + - list + - watch +- apiGroups: + - "" + resources: + - configmaps + - nodes/metrics + verbs: + - get +- nonResourceURLs: + - /metrics + verbs: + - get +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: prometheus +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: prometheus +subjects: +- kind: ServiceAccount + name: prometheus + namespace: monitor diff --git a/4.monitor/prometheus/2.configmap.yml b/4.monitor/prometheus/2.configmap.yml new file mode 100644 index 0000000..32cb637 --- /dev/null +++ b/4.monitor/prometheus/2.configmap.yml @@ -0,0 +1,59 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: prometheus-config + namespace: monitor +data: + prometheus.yml: | + global: + scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. + evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. + alerting: + alertmanagers: + - static_configs: + - targets: + - 10.10.10.160:9093 + rule_files: + - "/etc/prometheus/rules.yml" + scrape_configs: + - job_name: "prometheus" + static_configs: + - targets: ["localhost:9090"] + - job_name: "alertmanager" + static_configs: + - targets: ["10.10.10.160:9093"] + - job_name: 'consul-app-prometheus' + metrics_path: "/actuator/prometheus" + consul_sd_configs: # 配置基于consul的服务发现 + - server: 172.16.5.37:8500 # consul + refresh_interval: 10s # 刷新间隔 + services: ['application'] + + relabel_configs: # 把__meta_consul_service_id 映射主机名 + - source_labels: [__meta_consul_service_id] + separator: ; + regex: (.*) + target_label: 'instance' + replacement: $1 + action: replace + - source_labels: [__meta_consul_service_address] #映射主机IP + separator: ; + regex: (.*) + target_label: 'ip' + replacement: $1 + action: replace + - source_labels: [__meta_consul_service] + target_label: 'service' + + rules.yml: | + groups: + - name: jvm告警 + rules: + - alert: 频繁FullGC + expr: increase(jvm_gc_pause_seconds_sum[5m]) > 1 + for: 1m + labels: + severity: 警告 + annotations: + summary: "检测到频繁的 Full GC" + description: "{{$labels.instance}} 正在经历频繁的 Full GC 事件" \ No newline at end of file diff --git a/4.monitor/prometheus/3.deploy.yml b/4.monitor/prometheus/3.deploy.yml new file mode 100644 index 0000000..f934e52 --- /dev/null +++ b/4.monitor/prometheus/3.deploy.yml @@ -0,0 +1,50 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: prometheus + namespace: monitor + labels: + app: prometheus +spec: + selector: + matchLabels: + app: prometheus + template: + metadata: + labels: + app: prometheus + spec: + securityContext: #指定运行的用户为root + runAsUser: 0 + serviceAccountName: prometheus + containers: + - image: prom/prometheus:v2.30.2 + name: prometheus + args: + - "--config.file=/etc/prometheus/prometheus.yml" #通过volume挂载prometheus.yml + - "--storage.tsdb.path=/prometheus" #通过vlolume挂载目录/prometheus + - "--storage.tsdb.retention.time=24h" + - "--web.enable-admin-api" #控制对admin HTTP API的访问,其中包括删除时间序列等功能 + - "--web.enable-lifecycle" #支持热更新,直接执行localhost:9090/-/reload立即生效 + ports: + - containerPort: 9090 + name: http + volumeMounts: + - mountPath: "/etc/prometheus" + name: config-volume + - mountPath: "/prometheus" + name: data + resources: + limits: + cpu: "0.5" + memory: 2Gi + requests: + cpu: 100m + memory: 1Gi + volumes: + - name: data + persistentVolumeClaim: + claimName: prometheus-data-pvc #本地存储 + - name: config-volume + configMap: + name: prometheus-config \ No newline at end of file diff --git a/4.monitor/prometheus/consul.py b/4.monitor/prometheus/consul.py new file mode 100644 index 0000000..fed84bc --- /dev/null +++ b/4.monitor/prometheus/consul.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +import requests +import subprocess + +# 获取 node-exporter 的 Pod 名称和节点名称 +pod_info_bytes = subprocess.check_output("kubectl -n monitor get po -owide -l app=node-exporter --no-headers", shell=True) +# 将二进制数据转换为字符串并按行分割 +# pod_info = pod_info_bytes.strip().split('\n') +pod_info = pod_info_bytes.decode('utf-8').strip().split('\n') +# 提取 Pod 名称和节点名称 +pod_names = [info.split()[0] for info in pod_info] +node_ips = [info.split()[5] for info in pod_info] +node_names = [info.split()[6] for info in pod_info] + +# 确保名称数量一致 +if len(pod_names) != len(node_names): + print("Error: 节点数量与 Pod 数量不匹配.") + exit(1) + + + +# 定义 Consul agent 的端点 +consul_endpoint = "http://consul.opsx.top/v1/agent/service/register" + +# 遍历每个 Pod 并将服务注册到 Consul +for pod_name,node_ip, node_name in zip(pod_names, node_ips,node_names): + # print("pod: {} ip:{} node: {}".format(pod_name, node_ip,node_name)) + # 定义服务注册的数据 + data = { + "id": f"{node_name}-{pod_name}", + "name": "node-exporter", + "address": f"{node_ip}", + "port": 9100, + "checks": [{ + "http": f"http://{node_ip}:9100/metrics", + "interval": "5s" + }] + } + print(data) + + # 发送 PUT 请求以注册服务 + response = requests.put(consul_endpoint, json=data) + + # 检查响应状态 + if response.status_code == 200: + print(f"服务 {pod_name} 注册成功.") + else: + print(f"无法注册服务 {pod_name}. 状态码: {response.status_code}") + print(response.text) \ No newline at end of file diff --git a/4.monitor/prometheus/consul_delete_all.py b/4.monitor/prometheus/consul_delete_all.py new file mode 100644 index 0000000..b5c1030 --- /dev/null +++ b/4.monitor/prometheus/consul_delete_all.py @@ -0,0 +1,38 @@ +# 清理失效实例 +import requests + +def deregister_failed_instances(consul_url): + response = requests.get(consul_url) + if response.status_code == 200: + instances = response.json() + for instance in instances: + service_id = instance['ServiceID'] + if service_id: + requests.put(f"http://consul.opsx.top/v1/agent/service/deregister/{service_id}") + print(f"失效实例ID: {service_id}") + else: + print(f"无法从 Consul API 获取数据。状态码:{response.status_code}") + +consul_url = "http://consul.opsx.top/v1/health/state/any" +deregister_failed_instances(consul_url) + + + + + +# curl -X PUT -d '{ +# "id": "host-122", +# "name": "node-exporter", +# "address": "192.168.0.120", +# "port": 9100, +# "tags": ["linux"], +# "meta": { +# "group": "kong", +# "environment": "Pro", +# "project": "API_Platform" +# }, +# "checks": [ { +# "http": "http://192.168.0.120:9100/metrics", +# "interval": "5s" +# }]}' \ +# http://127.0.0.1:8500/v1/agent/service/register \ No newline at end of file diff --git a/4.monitor/prometheus/consul_failed_clean.py b/4.monitor/prometheus/consul_failed_clean.py new file mode 100644 index 0000000..80c225f --- /dev/null +++ b/4.monitor/prometheus/consul_failed_clean.py @@ -0,0 +1,38 @@ +# 清理失效实例 +import requests + +def deregister_failed_instances(consul_url): + response = requests.get(consul_url) + if response.status_code == 200: + instances = response.json() + for instance in instances: + if instance['Status'] == 'critical': # 如果实例状态为严重 + service_id = instance['ServiceID'] + requests.put(f"http://consul.opsx.top/v1/agent/service/deregister/{service_id}") + print(f"失效实例ID: {service_id}") + else: + print(f"无法从 Consul API 获取数据。状态码:{response.status_code}") + +consul_url = "http://consul.opsx.top/v1/health/state/critical" +deregister_failed_instances(consul_url) + + + + + +# curl -X PUT -d '{ +# "id": "host-122", +# "name": "node-exporter", +# "address": "192.168.0.120", +# "port": 9100, +# "tags": ["linux"], +# "meta": { +# "group": "kong", +# "environment": "Pro", +# "project": "API_Platform" +# }, +# "checks": [ { +# "http": "http://192.168.0.120:9100/metrics", +# "interval": "5s" +# }]}' \ +# http://127.0.0.1:8500/v1/agent/service/register \ No newline at end of file diff --git a/4.monitor/pvc.yml b/4.monitor/pvc.yml new file mode 100644 index 0000000..e69de29 diff --git a/4.monitor/readme.md b/4.monitor/readme.md new file mode 100644 index 0000000..11ae438 --- /dev/null +++ b/4.monitor/readme.md @@ -0,0 +1,9 @@ + +# monitor diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..0e4d9f3 --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +# Opsbase.cn_Full_container_scheme + +- 基础环境和组件部署 +- kubernets 基础 +- docker-compose all in one (容器化一键部署开发环境) +- 基于全套阿里云微服务框架serverless实践 +- 基于AWS EKS Fargate 实践 +- 通用CI/CD 实践 +- 基于飞书&Lark 审批流部署 +- 脚本&工具链开发 + + diff --git a/deploy-kubernetes-helm/README.md b/deploy-kubernetes-helm/README.md new file mode 100644 index 0000000..e27580c --- /dev/null +++ b/deploy-kubernetes-helm/README.md @@ -0,0 +1,19 @@ + +# helm + +```bash +# k8s-master节点安装 +wget https://get.helm.sh/helm-v3.14.2-linux-amd64.tar.gz +tar -zxf helm-*-linux-amd64.tar.gz +cp linux-amd64/helm /usr/local/bin/ + +# 验证安装 +helm version +``` \ No newline at end of file diff --git a/deploy-kubernetes-helm/helm仓库.md b/deploy-kubernetes-helm/helm仓库.md new file mode 100644 index 0000000..b66252c --- /dev/null +++ b/deploy-kubernetes-helm/helm仓库.md @@ -0,0 +1,14 @@ +# 部署仓库 + +```bash +## 添加仓库 +helm repo add harbor https://helm.goharbor.io +helm repo add bitnami https/charts.bitnami.com/bitnami +helm repo add microsoft http://mirror.azure.cn/kubernetes/charts + +## 更新仓库 +helm repo update + +## 移除仓库 +helm repo remove xxxx +``` diff --git a/deploy-kubernetes-helm/常用命令.md b/deploy-kubernetes-helm/常用命令.md new file mode 100644 index 0000000..b819d4a --- /dev/null +++ b/deploy-kubernetes-helm/常用命令.md @@ -0,0 +1,26 @@ + + +# 命令 + +## nfs 命令行 + +```bash +mkdir /data/nfs -p +helm install test-storageclass \ +Microsoft/nfs-client-provisioner \ +--set nfs.server=192.168.66.161 \ +--set nfs.path=/data/nfs +``` + +## 单机 minio + +```bash +helm install stable/minio +helm install minio --namespace minio \ +--set mode=distributed,replicas=3 stable/minio +``` diff --git a/deploy/jenkins-ci.md b/deploy/jenkins-ci.md new file mode 100644 index 0000000..759363e --- /dev/null +++ b/deploy/jenkins-ci.md @@ -0,0 +1,18 @@ +# Jenkins ci + +## 部署 + +- 基于镜像部署 +- 基于镜像+deployment yml + +## 图 + +![jenkins-demo](/docs/image/jenkins1.png) + +--- + +![jenkins-demo](/docs/image/jenkins2.png) + +--- + +![jenkins-demo](/docs/image/jenkins3.png) diff --git a/docker-compose-all-one/README.md b/docker-compose-all-one/README.md new file mode 100644 index 0000000..86ff480 --- /dev/null +++ b/docker-compose-all-one/README.md @@ -0,0 +1,61 @@ + + +# docker-compose-all-one + +## docker + +```bash +# 一键安装Docker +curl -sSL https://get.docker.com/ | sh +``` + + +## 二进制 docker-compose + +下载版本: https://github.com/docker/compose/releases + +```bash +wget https://github.com/docker/compose/releases/download/v2.14.0/docker-compose-`uname -s`-`uname -m` + +mv docker-compose* /usr/local/sbin/docker-compose +chmod +x /usr/local/sbin/docker-compose +docker-compose version # 查看docker-compose版本 +``` + +## 存储路径 + +```text +/data/docker +``` + +## 服务一键安装指令 +```bash +# 拉起所有基础服务 +docker-compose up -d +# 停止所有服务 +docker-compose down + +# 停指定服务 +docker-compose down kafka +# 安装指定服务 +docker-compose up -d mysql +``` + +## 服务清单 + +| 服务 | 连接地址 | 账号密码 | +| ------------ | ----------------------- | -------------------------------------------------------------------------------- | +|mysql | 端口:3306 | root/123456 | +|redis | 端口:6379 |123456 | +|kafka | 端口:9092 |- | +|kafka-manager | 端口:9000 |- | +|elasticsearch | 端口:9200 |- | +|elasticsearch-head | 管理后台: http://ip:9100 |- | +|nacos | 管理后台: http://ip:8848/nacos |-| +|grafana | 管理后台: http://ip:3000 |admin/admin | + diff --git a/docker-compose-all-one/config/elasticsearch/elasticsearch.yml b/docker-compose-all-one/config/elasticsearch/elasticsearch.yml new file mode 100644 index 0000000..8ea46f2 --- /dev/null +++ b/docker-compose-all-one/config/elasticsearch/elasticsearch.yml @@ -0,0 +1,11 @@ +cluster.name: "es-1" +network.host: 0.0.0.0 +http.port: 9200 +http.cors.enabled: true +http.cors.allow-origin: "*" # 允许跨域访问 + + +# node.master: true +# node.data: true +# path.data: /usr/share/elasticsearch/data +# path.logs: /usr/share/elasticsearch/logs \ No newline at end of file diff --git a/docker-compose-all-one/config/history/old.yml b/docker-compose-all-one/config/history/old.yml new file mode 100644 index 0000000..58c41e3 --- /dev/null +++ b/docker-compose-all-one/config/history/old.yml @@ -0,0 +1,51 @@ + ########## rabbitmq ########## + rabbitmq: + image: rabbitmq:management + container_name: rabbitmq + hostname: rabbitmq + restart: unless-stopped + privileged: true + ports: + - 4369:4369 + - 5671:5671 + - 5672:5672 + - 15672:15672 + - 25672:25672 + environment: + RABBITMQ_DEFAULT_VHOST: / + RABBITMQ_DEFAULT_USER: admin + RABBITMQ_DEFAULT_PASS: admin + RABBITMQ_LOGS: /var/lib/rabbitmq/rabbitmq.log + RABBITMQ_SASL_LOGS: /var/lib/rabbitmq/rabbitmq-sasl.log + RABBITMQ_ERLANG_COOKIE: LZJADKXKLULIXFKAALGX + logging: + driver: "json-file" + options: + max-size: "50m" + max-file: "3" + volumes: + - /etc/localtime:/etc/localtime:ro + - /etc/hosts:/etc/hosts:ro + - /data/docker/rabbitmq:/var/lib/rabbitmq + network_mode: "host" + + + +########## kafka-manager ########## + kafka-manager: + image: sheepkiller/kafka-manager + container_name: kafka-manager + hostname: kafka-manager + restart: always + ports: + - 9000:9000 + network_mode: 'host' + environment: + ZK_HOSTS: localhost:2181 + APPLICATION_SECRET: letmein + KAFKA_MANAGER_AUTH_ENABLED: "true" + KAFKA_MANAGER_USERNAME: admin + KAFKA_MANAGER_PASSWORD: admin + depends_on: + - zookeeper + - kafka \ No newline at end of file diff --git a/docker-compose-all-one/config/mysql/my.cnf b/docker-compose-all-one/config/mysql/my.cnf new file mode 100644 index 0000000..fa1589c --- /dev/null +++ b/docker-compose-all-one/config/mysql/my.cnf @@ -0,0 +1,19 @@ +[mysqld] +lower_case_table_names=1 +#datadir=/var/lib/mysql/data +#basedir=/var/lib/mysql +socket=/var/lib/mysql/mysql.sock +user=mysql +default-storage-engine=INNODB +character-set-server=utf8mb4 +collation-server=utf8mb4_unicode_ci + +# 日志配置 +log_error = /var/lib/mysql/error.log +slow_query_log = 1 +slow_query_log_file = /var/lib/mysql/slow-query.log +# 优化参数 +innodb_buffer_pool_size = 2G # 内存缓冲池的大小建议为系统内存的 50-80% +innodb_log_buffer_size = 8M # 默认值8MB ,写入负载较大时可提高 +skip_name_resolve = 1 + diff --git a/docker-compose-all-one/config/mysql57/my.cnf b/docker-compose-all-one/config/mysql57/my.cnf new file mode 100644 index 0000000..5287d7a --- /dev/null +++ b/docker-compose-all-one/config/mysql57/my.cnf @@ -0,0 +1,19 @@ +[mysqld] +lower_case_table_names=1 +#datadir=/var/lib/mysql/data +#basedir=/var/lib/mysql +socket=/var/lib/mysql/mysql.sock +user=mysql +default-storage-engine=INNODB +character-set-server=utf8 +sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION +symbolic-links=0 +[mysqld_safe] +log-error=/var/log/mysqld.log +pid-file=/var/run/mysqld/mysqld.pid +[client] +default-character-set=utf8 +port=3306 +socket=/var/lib/mysql/mysql.sock +[mysql] +default-character-set=utf8 \ No newline at end of file diff --git a/docker-compose-all-one/config/redis/redis.conf b/docker-compose-all-one/config/redis/redis.conf new file mode 100644 index 0000000..972fb93 --- /dev/null +++ b/docker-compose-all-one/config/redis/redis.conf @@ -0,0 +1,64 @@ +port 6379 # 监听端口 +bind 0.0.0.0 # 监听地址 +protected-mode no # Protected-mode 禁止公网访问redis cache +daemonize yes # 是否以守护进程方式启动 +timeout 300 # 客户端连接的超时时间,单位为秒,超时后会关闭连接,0永不超时 +tcp-keepalive 60 # 服务端主动向空闲的客户端发起ack请求,以判断连接是否有效 +databases 20 # 设置数据库数量,默认数据库为0 +maxclients 2000 # 设置最大连接数,0为不限制 +slowlog-log-slower-than 10000 +slowlog-max-len 128 +tcp-backlog 511 +supervised no +pidfile /var/run/redis_6379.pid +loglevel notice #日志级别,分别有: +# debug :适用于开发和测试 +# verbose :更详细信息 +# notice :适用于生产环境 +# warning :只记录警告或错误信息 +logfile "/var/redis/log/6379.log" +save 900 1 +save 300 10 +save 60 10000 +stop-writes-on-bgsave-error yes +rdbcompression yes +rdbchecksum yes +dbfilename dump.rdb +dir ./ +slave-serve-stale-data yes +slave-read-only yes +repl-diskless-sync no +repl-diskless-sync-delay 5 +repl-disable-tcp-nodelay no +slave-priority 100 +maxmemory-policy allkeys-lru +appendonly yes # AOF持久化,是否记录更新操作日志,默认redis是异步(快照)把数据写入本地磁盘 +appendfilename "6379.aof" # 指定更新日志文件名 +appendfsync everysec +# everysec 默认方式,每秒同步一次到appendonly.aof +# always 每次有数据发生变化时都会写入 +# no 不同步,数据不会持久化 +no-appendfsync-on-rewrite no # 当AOF日志文件即将增长到指定百分比时,redis通过调用BGREWRITEAOF是否自动重写AOF日志文件 +auto-aof-rewrite-percentage 100 +auto-aof-rewrite-min-size 64mb +aof-load-truncated yes +lua-time-limit 5000 +cluster-enabled yes +cluster-config-file nodes-6379.conf +latency-monitor-threshold 0 +notify-keyspace-events "" +hash-max-ziplist-entries 512 +hash-max-ziplist-value 64 +list-max-ziplist-size -2 +list-compress-depth 0 +set-max-intset-entries 512 +zset-max-ziplist-entries 128 +zset-max-ziplist-value 64 +hll-sparse-max-bytes 3000 +activerehashing yes +client-output-buffer-limit normal 0 0 0 +client-output-buffer-limit slave 256mb 64mb 60 +client-output-buffer-limit pubsub 32mb 8mb 60 +hz 10 +aof-rewrite-incremental-fsync yes +requirepass 123456 diff --git a/docker-compose-all-one/config/rocketmq/broker.conf b/docker-compose-all-one/config/rocketmq/broker.conf new file mode 100644 index 0000000..55b803f --- /dev/null +++ b/docker-compose-all-one/config/rocketmq/broker.conf @@ -0,0 +1,17 @@ +brokerClusterName=DefaultCluster +brokerName=broker-a +brokerId=0 +# 修改为你宿主机的 IP +brokerIP1=0.0.0.0 +defaultTopicQueueNums=4 +autoCreateTopicEnable=true +autoCreateSubscriptionGroup=true +listenPort=10911 +deleteWhen=04 +fileReservedTime=120 +mapedFileSizeCommitLog=1073741824 +mapedFileSizeConsumeQueue=300000 +diskMaxUsedSpaceRatio=88 +maxMessageSize=65536 +brokerRole=ASYNC_MASTER +flushDiskType=ASYNC_FLUSH \ No newline at end of file diff --git a/docker-compose-all-one/docker-compose.yml b/docker-compose-all-one/docker-compose.yml new file mode 100644 index 0000000..2601250 --- /dev/null +++ b/docker-compose-all-one/docker-compose.yml @@ -0,0 +1,44 @@ +version: '3' +services: + nacos: + extends: + file: services/nacos.yml + service: nacos + redis: + extends: + file: services/redis.yml + service: redis + mysql: + extends: + file: services/mysql.yml + service: mysql + kafka: + extends: + file: services/kafka.yml + service: kafka + kafka-manager: + extends: + file: services/kafka-manager.yml + service: kafka-manager + zookeeper: + extends: + file: services/zookeeper.yml + service: zookeeper + elasticsearch: + extends: + file: services/elasticsearch.yml + service: elasticsearch + elasticsearch-head: + extends: + file: services/elasticsearch-head.yml + service: elasticsearch-head + grafana: + extends: + file: services/grafana.yml + service: grafana + openldap: + extends: + file: services/openldap.yml + service: openldap + + \ No newline at end of file diff --git a/docker-compose-all-one/docs/es.md b/docker-compose-all-one/docs/es.md new file mode 100644 index 0000000..c34b206 --- /dev/null +++ b/docker-compose-all-one/docs/es.md @@ -0,0 +1,7 @@ +# es + +```bash +# 查看es节点状态 +curl -XGET 'http://127.0.0.1:9200/_cat/nodes?v' +``` + diff --git a/docker-compose-all-one/docs/grafana.md b/docker-compose-all-one/docs/grafana.md new file mode 100644 index 0000000..5c3c7c7 --- /dev/null +++ b/docker-compose-all-one/docs/grafana.md @@ -0,0 +1,5 @@ +# Grafana + +```bash +docker exec -it grafana grafana-cli plugins install alexanderzobnin-zabbix-app +``` \ No newline at end of file diff --git a/docker-compose-all-one/docs/kafka.md b/docker-compose-all-one/docs/kafka.md new file mode 100644 index 0000000..63ebea4 --- /dev/null +++ b/docker-compose-all-one/docs/kafka.md @@ -0,0 +1,12 @@ +# 命令 + +```bash +# 查看topics列表 +docker exec -it kafka kafka-topics.sh --list --bootstrap-server localhost:9092 +# 创建topics +docker exec -it kafka kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 3 --topic test-data1 + +# 旧版本 +kafka-topics.sh --list --zookeeper zk-1:2181 +kafka-topics.sh --zookeeper zk-1:2181 --create --replication-factor 1 --partitions 3 --topic pro-dmin +``` \ No newline at end of file diff --git a/docker-compose-all-one/services/docker-compose-bak.yml b/docker-compose-all-one/services/docker-compose-bak.yml new file mode 100644 index 0000000..df1d2b3 --- /dev/null +++ b/docker-compose-all-one/services/docker-compose-bak.yml @@ -0,0 +1,69 @@ +# |rabbitmq | 端口:5672 |- | +# |rabbitmq-management | 管理后台: http://ip:15672 |guest/guest | +# |rocketmq | 端口: 9876 | - | +# |rocketmq-console | 管理后台: http://ip:28080 |- | + +version: '3' +services: + ########## rabbitmq ########## + rabbitmq: + image: rabbitmq:management + container_name: rabbitmq + hostname: rabbitmq + restart: unless-stopped + privileged: true + ports: + - 4369:4369 + - 5671:5671 + - 5672:5672 + - 15672:15672 + - 25672:25672 + environment: + RABBITMQ_DEFAULT_VHOST: / + RABBITMQ_DEFAULT_USER: guest + RABBITMQ_DEFAULT_PASS: guest + RABBITMQ_LOGS: /var/lib/rabbitmq/rabbitmq.log + RABBITMQ_SASL_LOGS: /var/lib/rabbitmq/rabbitmq-sasl.log + RABBITMQ_ERLANG_COOKIE: LZJADKXKLULIXFKAALGX + logging: + driver: "json-file" + options: + max-size: "50m" + max-file: "3" + volumes: + - /etc/localtime:/etc/localtime:ro + - /etc/hosts:/etc/hosts:ro + - /data/docker/rabbitmq:/var/lib/rabbitmq + network_mode: "host" + ########## rocketmq ########## + rocketmq: + image: foxiswho/rocketmq:4.7.0 + container_name: rocketmq + ports: + - 9876:9876 + environment: + JAVA_OPT: -server -Xms256m -Xmx256m + command: sh mqnamesrv + rocketmq-broker: + image: foxiswho/rocketmq:4.7.0 + container_name: rocketmq-broker + ports: + - 10911:10911 + - 10909:10909 + volumes: + - ./config/rocketmq/broker.conf:/usr/local/dockerCompose/rocketmq/conf/broker.conf + environment: + JAVA_OPT_EXT: -server -Xms256m -Xmx256m -Xmn128m + NAMESRV_ADDR: 127.0.0.1:9876 + command: sh mqbroker -n 127.0.0.1:9876 -c /usr/local/dockerCompose/rocketmq/conf/broker.conf + rocketmq-console: + image: styletang/rocketmq-console-ng + container_name: rocketmq-console + ports: + - 28080:8080 + environment: + JAVA_OPTS: -Drocketmq.namesrv.addr=127.0.0.1:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=falses + depends_on: # 依赖情况,需要先确保依赖服务 + - rocketmq + - rocketmq-broker + diff --git a/docker-compose-all-one/services/elasticsearch-head.yml b/docker-compose-all-one/services/elasticsearch-head.yml new file mode 100644 index 0000000..ce977e2 --- /dev/null +++ b/docker-compose-all-one/services/elasticsearch-head.yml @@ -0,0 +1,11 @@ +version: '3' +services: + elasticsearch-head: # web-ui + image: mobz/elasticsearch-head:5-alpine + container_name: elasticsearch-head + hostname: elasticsearch-head + restart: always + ports: + - "9100:9100" + depends_on: # 依赖情况,需要先确保依赖服务 + - elasticsearch \ No newline at end of file diff --git a/docker-compose-all-one/services/elasticsearch.yml b/docker-compose-all-one/services/elasticsearch.yml new file mode 100644 index 0000000..d667813 --- /dev/null +++ b/docker-compose-all-one/services/elasticsearch.yml @@ -0,0 +1,16 @@ +version: '3' +services: +########## elasticsearc ########## + elasticsearch: + image: docker.elastic.co/elasticsearch/elasticsearch:7.17.0 + container_name: elasticsearch # 容器名 + hostname: elasticsearch # 主机名 + restart: unless-stopped # 容器停止时重新启动 + environment: + - discovery.type=single-node + - ES_JAVA_OPTS=-Xms512m -Xmx512m + ports: + - 9200:9200 + volumes: + - ../config/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml + network_mode: "host" diff --git a/docker-compose-all-one/services/grafana.yml b/docker-compose-all-one/services/grafana.yml new file mode 100644 index 0000000..929d9ca --- /dev/null +++ b/docker-compose-all-one/services/grafana.yml @@ -0,0 +1,13 @@ +version: '3' +services: + ########## grafana ########## + grafana: + image: grafana/grafana:9.4.0 + container_name: grafana # 容器名 + hostname: grafana # 主机名 + restart: unless-stopped # 容器停止时重新启动 + ports: + - 3000:3000 + volumes: + - /data/docker/grafana-data:/var/lib/grafan + network_mode: 'host' \ No newline at end of file diff --git a/docker-compose-all-one/services/kafka-manager.yml b/docker-compose-all-one/services/kafka-manager.yml new file mode 100644 index 0000000..afb863b --- /dev/null +++ b/docker-compose-all-one/services/kafka-manager.yml @@ -0,0 +1,14 @@ +version: '3' +services: + ########## kafka ########## + kafka-manager: + image: sheepkiller/kafka-manager:latest + container_name: kafka-manager + restart: unless-stopped + ports: + - "9000:9000" + environment: + ZK_HOSTS: "127.0.0.1:2181" + network_mode: 'host' + depends_on: + - zookeeper \ No newline at end of file diff --git a/docker-compose-all-one/services/kafka.yml b/docker-compose-all-one/services/kafka.yml new file mode 100644 index 0000000..661a708 --- /dev/null +++ b/docker-compose-all-one/services/kafka.yml @@ -0,0 +1,25 @@ +version: '3' +services: +########## Kafka ########## + kafka: + image: 'bitnami/kafka:latest' + container_name: kafka # 容器名 + hostname: kafka # 主机名 + restart: unless-stopped # 容器停止时重新启动 + ports: + - '9092:9092' # 将 Kafka 的 9092 端口映射到主机的 9092 端口 + environment: + KAFKA_BROKER_ID: 1 # 设置 Kafka Broker ID 为 1 + KAFKA_CFG_LISTENERS: PLAINTEXT://:9092 # Kafka 监听器配置 + KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://127.0.0.1:9092 # Kafka 广播监听器配置 + KAFKA_CFG_ZOOKEEPER_CONNECT: 127.0.0.1:2181 # Kafka 连接 Zookeeper 的配置 + ALLOW_PLAINTEXT_LISTENER: 'yes' # 允许使用明文监听器 + KAFKA_LOG_RETENTION_HOURS: 120 # 日志保留时间设置为 120 小时 + KAFKA_MESSAGE_MAX_BYTES: 10000000 # 消息最大字节数设置为 10000000 + KAFKA_REPLICA_FETCH_MAX_BYTES: 10000000 # 复制获取最大字节数设置为 10000000 + KAFKA_GROUP_MAX_SESSION_TIMEOUT_MS: 60000 # 消费者组最大会话超时时间设置为 60000 毫秒 + KAFKA_NUM_PARTITIONS: 1 # 分区数量设置为 1 + KAFKA_DELETE_RETENTION_MS: 1000 # 删除保留时间设置为 1000 毫秒 + network_mode: 'host' # 使用主机网络模式 + depends_on: + - zookeeper # 依赖于 zookeeper 服务 \ No newline at end of file diff --git a/docker-compose-all-one/services/mysql.yml b/docker-compose-all-one/services/mysql.yml new file mode 100644 index 0000000..0e467b5 --- /dev/null +++ b/docker-compose-all-one/services/mysql.yml @@ -0,0 +1,19 @@ +version: '3' +services: + ########## mysql ########## + mysql: + image: mysql:latest + container_name: mysql + hostname: mysql + restart: unless-stopped + privileged: true + command: --default-authentication-plugin=mysql_native_password + ports: + - 3306:3306 + environment: + MYSQL_ROOT_PASSWORD: 123456 + volumes: + - /data/docker/mysql/data:/var/lib/mysql + - /data/docker/mysql/mysql-files:/var/lib/mysql-files + - ../config/mysql/my.cnf:/etc/mysql/my.cnf + network_mode: "host" # 使用主机网络模式 \ No newline at end of file diff --git a/docker-compose-all-one/services/nacos.yml b/docker-compose-all-one/services/nacos.yml new file mode 100644 index 0000000..cfddfdc --- /dev/null +++ b/docker-compose-all-one/services/nacos.yml @@ -0,0 +1,18 @@ +version: '3' +services: + ########## nacos ########## + nacos: + image: nacos/nacos-server:latest + container_name: nacos + hostname: nacos + # restart: unless-stopped + ports: + - 8848:8848 + environment: + MODE: standalone + JVM_XMS: 256m + JVM_XMX: 512m + volumes: + - /data/docker/nacos/data:/home/nacos/data + - /data/docker/nacos/logs:/home/nacos/logs + network_mode: 'host' # 网络模式 \ No newline at end of file diff --git a/docker-compose-all-one/services/openldap.yml b/docker-compose-all-one/services/openldap.yml new file mode 100644 index 0000000..df95e52 --- /dev/null +++ b/docker-compose-all-one/services/openldap.yml @@ -0,0 +1,19 @@ +version: '3' +services: +########## ldap server ########## + openldap: + image: osixia/openldap:latest + container_name: ldap-service + hostname: ldap-service + restart: unless-stopped + ports: + - 389:389 + - 636:636 + environment: + LDAP_ORGANISATION: opsx + LDAP_DOMAIN: "opsx.vip" + LDAP_BASE_DN: "dc=opsx,dc=vip" + LDAP_ADMIN_PASSWORD: "opsx.vip" + volumes: + - /data/docker/slapd/database:/var/lib/ldap + - /data/docker/slapd/config:/etc/ldap/slapd.d diff --git a/docker-compose-all-one/services/redis.yml b/docker-compose-all-one/services/redis.yml new file mode 100644 index 0000000..fb90af7 --- /dev/null +++ b/docker-compose-all-one/services/redis.yml @@ -0,0 +1,18 @@ +version: '3' +services: + + ########## redis ########## + redis: + image: redis + container_name: redis + hostname: redis + restart: unless-stopped + privileged: true + ports: + - 6379:6379 + command: redis-server --requirepass 123456 --dir /data + volumes: + - /etc/localtime:/etc/localtime:ro + - /data/docker/redis/data:/data + - ../config/redis/redis.conf:/etc/redis/redis.conf + network_mode: "host" # 方便容器与容器访问时直接使用宿主机的网络 \ No newline at end of file diff --git a/docker-compose-all-one/services/zookeeper.yml b/docker-compose-all-one/services/zookeeper.yml new file mode 100644 index 0000000..63c33f1 --- /dev/null +++ b/docker-compose-all-one/services/zookeeper.yml @@ -0,0 +1,17 @@ +version: '3' +services: + ########## zk ########## + zookeeper: + image: bitnami/zookeeper:latest + container_name: zookeeper + hostname: zookeeper + restart: unless-stopped + ports: + - "2181:2181" + environment: + - ALLOW_ANONYMOUS_LOGIN=yes # 匿名登录--必须开启 + network_mode: 'host' + # volumes: # 需要权限 chmod 777 + # - /data/docker/zookeeper/data:/bitnami/zookeeper/data + # - /data/docker/zookeeper/logs:/bitnami/zookeeper/logs + \ No newline at end of file diff --git a/docker-compose-yaml/base.sh b/docker-compose-yaml/base.sh new file mode 100644 index 0000000..e93431a --- /dev/null +++ b/docker-compose-yaml/base.sh @@ -0,0 +1,93 @@ +#!/usr/bin/env bash +### +# @Author: Logan.Li +# @Gitee: https://gitee.com/attacker +# @email: admin@attacker.club +# @Date: 2023-10-28 00:01:57 +# @LastEditTime: 2023-10-28 01:30:56 +# @Description: +### + +CURRENT_DIR=$( + cd "$(dirname "$0")" + pwd +) + +function logger() { + case "$1" in + "error" | "red") + echo -e "\e[1;31m$2\e[0m" + echo "$2" >>${CURRENT_DIR}/install.log + exit 1 + ;; + "warning" | "yellow") + echo -e "\e[1;33m$2\e[0m" + echo "$2" >>${CURRENT_DIR}/install.log + ;; + "success" | "green") + echo -e "\e[1;32m$2\e[0m" + echo "$2" >>${CURRENT_DIR}/install.log + ;; + "info" | "blue") + echo -e "\e[1;34m$2\e[0m" + echo "$2" >>${CURRENT_DIR}/install.log + ;; + esac +} + +# 判断是否root用户 +if [ $(id -u) -ne 0 ]; then + logger error "########## This script must be run as root !!! ##########" +fi + +# 环境检查 +echo "time: $(date)" + +if which getenforce && [ $(getenforce) == "Enforcing" ]; then + logger info "... 关闭 SELINUX" + setenforce 0 + sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config +fi + +>${CURRENT_DIR}/install.log +logger info "======================= 开始安装 =======================" 2>&1 | tee -a ${CURRENT_DIR}/install.log + +logger info "检查 是否存在离线包 [offline.tar.gz]" +if [ -f ${CURRENT_DIR}/offline.tar.gz ]; then + tar zxf offline.tar.gz + chmod +x docker-install.sh && ./docker-install.sh + logger success "离线docker 安装成功" + \cp docker-compose /usr/local/sbin/docker-compose + chmod +x /usr/local/sbin/docker-compose + logger success "离线ocker-compose 安装成功" +fi + +# 检查是否已经安装 Docker +if [ -x "$(command -v docker)" ]; then + logger info "Docker 已经安装" +else + # 下载 Docker 二进制安装包 + curl -fsSL https://get.docker.com | sh + logger success "安装 Docker" +fi + +# 检查是否已经安装 Docker Compose +if [ -x "$(command -v docker-compose)" ]; then + logger info "Docker Compose 已经安装" +else + # 下载 Docker Compose 二进制安装包 + curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/sbin/docker-compose + # 设置可执行权限 + chmod +x /usr/local/sbin/docker-compose + docker-compose version # 查看docker-compose版本 + logger success "安装 Docker Compose" +fi + +# 检查是否有离线镜像 +if [ -f ${CURRENT_DIR}/image.tar.gz ]; then + logger info "检查到离线镜像 [image.tar.gz]" + cat image.tar.gz | gzip -d | docker load + logger success "完成镜像恢复" +fi + +logger info "开始服务部署 ... [xx.yml]" diff --git a/docker-compose-yaml/readme.md b/docker-compose-yaml/readme.md new file mode 100644 index 0000000..313c7d5 --- /dev/null +++ b/docker-compose-yaml/readme.md @@ -0,0 +1,22 @@ + +# 命令 + + + + +## 离线镜像使用 +```bash +# 备份镜像 +docker save -o images.tar.gz image1 image2 image3 + +# 恢复镜像 +cat image.tar.gz | gzip -d | docker load +``` + diff --git a/docker-compose-yaml/zabbix-docker.sh b/docker-compose-yaml/zabbix-docker.sh new file mode 100644 index 0000000..5d5df36 --- /dev/null +++ b/docker-compose-yaml/zabbix-docker.sh @@ -0,0 +1,81 @@ +#!/bin/bash +### +# @Author: admin@attacker.club +# @Date: 2022-09-29 14:35:55 +# @LastEditTime: 2023-10-28 00:59:41 +# @Description: +### + +docker stop zabbix-mysql +docker stop zabbix-web +docker stop zabbix-server +docker rm zabbix-mysql +docker rm zabbix-web +docker rm zabbix-server + +## DB服务 +dataDir="/opt/docker-data/mysql" +yum remove mariadb* -y # 卸载默认mariadb +rpm -ivh https://repo.mysql.com/mysql80-community-release-el7.rpm +yum install mysql-community-client -y # 安装mysql client + +if [ ! "$rootPassword" ]; then + rootPassword=$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 12) + zbxPassword=$(cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 12) + echo "rootPassword=$rootPassword" >>~/.bashrc + echo "zbxPassword=$zbxPassword" >>~/.bashrc +fi + +echo "> 启动mysql" +docker run \ + --restart always \ + -d -p 3306:3306 \ + --name zabbix-mysql \ + --hostname zabbix-mysql \ + -e MYSQL_ROOT_PASSWORD=${rootPassword} \ + -e MYSQL_USER="zabbix" \ + -e MYSQL_PASSWORD=${zbxPassword} \ + -e MYSQL_DATABASE="zabbix" \ + -v $dataDir:/var/lib/mysql \ + mysql:8 --character-set-server=utf8 --collation-server=utf8_bin + +sleep 10 +## 启动zabbix server +echo "> 启动zabbix server" +docker run -d -p 10051:10051 \ + --restart always \ + --name zabbix-server \ + --hostname zabbix-server \ + --link zabbix-mysql:mysql \ + -e DB_SERVER_HOST="mysql" \ + -e MYSQL_USER="zabbix" \ + -e MYSQL_PASSWORD="${zbxPassword}" \ + -v /etc/localtime:/etc/localtime:ro \ + -v /data/docker/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \ + -v /data/docker/zabbix/externalscripts:/usr/lib/zabbix/externalscripts \ + zabbix/zabbix-server-mysql:ubuntu-6.0-latest +# zabbix/zabbix-server-mysql:latest + +## 启动zabbix web +echo "> 启动zabbix web" +docker run -d -p 81:8080 \ + --restart always \ + --name zabbix-web \ + --hostname zabbix-web \ + --link zabbix-mysql:mysql \ + --link zabbix-server:zabbix-server \ + -e DB_SERVER_HOST="mysql" \ + -e MYSQL_USER="zabbix" \ + -e MYSQL_PASSWORD="${zbxPassword}" \ + -e ZBX_SERVER_HOST="zabbix-server" \ + -e PHP_TZ="Asia/Shanghai" \ + zabbix/zabbix-web-nginx-mysql:6.0-alpine-latest +# zabbix/zabbix-web-nginx-mysql:latest + +sleep 3 +echo "mysql -h127.0.0.1 -uroot -p$rootPassword" >mysql.txt +echo "mysql -h127.0.0.1 -uzabbix -p$zbxPassword" >>mysql.txt +echo "http://zabbix 账号: Admin / zabbix" +## sql添加远程账号 +# CREATE USER 'admin'@'%' ; +# GRANT ALL ON *.* TO 'admin'@'%' IDENTIFIED WITH mysql_native_password BY 'adminPwd123'; diff --git a/docker-compose-yaml/zabbix.sh b/docker-compose-yaml/zabbix.sh new file mode 100644 index 0000000..e69de29 diff --git a/docker-compose-yaml/zabbix.yml b/docker-compose-yaml/zabbix.yml new file mode 100644 index 0000000..e69de29 diff --git a/docker-compose-yaml/zabbix/mysql.zabbix.yml b/docker-compose-yaml/zabbix/mysql.zabbix.yml new file mode 100644 index 0000000..7f33c86 --- /dev/null +++ b/docker-compose-yaml/zabbix/mysql.zabbix.yml @@ -0,0 +1,112 @@ +version: "3" +services: + + mysql-server: + image: mysql:8.0 + hostname: mysql-server + container_name: mysql-server + restart: always + command: + - mysqld + - --character-set-server=utf8 + - --collation-server=utf8_bin + environment: + - MYSQL_DATABASE=zabbix + - MYSQL_USER=zabbix + - MYSQL_PASSWORD=zabbix@l1ve + - MYSQL_ROOT_PASSWORD=r00t@l1ve + - TZ=Asia/Shanghai + - LANG=en_US.UTF-8 + ports: + - 3306:3306 + volumes: + - /etc/localtime:/etc/localtime + - /data/docker/zabbix/mysql-data/mysql:/var/lib/mysql + expose: + - 3306 + + + zabbix-java-gateway: + image: zabbix/zabbix-java-gateway:latest + container_name: zabbix-java-gateway + restart: always + volumes: + - /etc/localtime:/etc/localtime + ports: + - "10052:10052" + + + zabbix-server: + image: zabbix/zabbix-server-mysql:latest + container_name: zabbix-server + restart: always + ports: + - 10051:10051 + volumes: + - /etc/localtime:/etc/localtime + - /data/docker/zabbix/mysql-data/zabbix:/usr/lib/zabbix + - /data/docker/zabbix/alertscripts:/usr/lib/zabbix/alertscripts + - /data/docker/zabbix/externalscripts:/usr/lib/zabbix/externalscripts + environment: + - DB_SERVER_HOST=mysql-server + - MYSQL_DATABASE=zabbix + - MYSQL_USER=zabbix + - MYSQL_PASSWORD=zabbix@l1ve + - MYSQL_ROOT_PASSWORD=r00t@l1ve + - ZBX_JAVAGATEWAY=zabbix-java-gateway + depends_on: + - mysql-server + - zabbix-java-gateway + links: + - zabbix-java-gateway + - mysql-server + + + zabbix-web: + image: zabbix/zabbix-web-nginx-mysql:latest + container_name: zabbix-web + restart: always + ports: + - 80:8080 + - 443:443 + volumes: + - /etc/localtime:/etc/localtime + # - /data/docker/zabbix/fonts/simkai.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf + environment: + - PHP_TZ=Asia/Shanghai + # - DB_SERVER_HOST=172.17.0.1 + - DB_SERVER_HOST=zabbix-server + - MYSQL_DATABASE=zabbix + - MYSQL_USER=zabbix + - MYSQL_PASSWORD=zabbix@l1ve + - MYSQL_ROOT_PASSWORD=r00t@l1ve + expose: + - 80 + - 443 + depends_on: + - mysql-server + - zabbix-java-gateway + links: + - zabbix-server + + + zabbix-agent: + image: zabbix/zabbix-agent:latest + container_name: zabbix-agent + restart: always + ports: + - 10050:10050 + environment: + - ZBX_HOSTNAME=zabbix-agent + - ZBX_SERVER_HOST=zabbix-server + - ZBX_SERVER_PORT=10051 + volumes: + - /data/docker/zabbix/zabbix_agentd.d/:/etc/zabbix/zabbix_agentd.d/ + - /data/docker/zabbix/scripts/:/etc/zabbix/scripts/ + expose: + - 10050 + links: + - zabbix-server + + + diff --git a/docker-compose-yaml/zabbix/pg.zabbix.yml b/docker-compose-yaml/zabbix/pg.zabbix.yml new file mode 100644 index 0000000..d2d8acb --- /dev/null +++ b/docker-compose-yaml/zabbix/pg.zabbix.yml @@ -0,0 +1,71 @@ +version: '3' + +services: + zabbix-server: + image: zabbix/zabbix-server-pgsql:latest + container_name: zabbix-server + restart: always + ports: + - "10051:10051" + environment: + - DB_SERVER_HOST=db + - POSTGRES_USER=zabbix + - POSTGRES_PASSWORD=zabbix@l1ve + - POSTGRES_DB=zabbix + - ZBX_JAVAGATEWAY=zabbix-java-gateway + depends_on: + - db + - zabbix-java-gateway + networks: + - zabbix-net + volumes: + - /data/docker/zabbix/alertscripts:/usr/lib/zabbix/alertscripts + - /data/docker/zabbix/externalscripts:/usr/lib/zabbix/externalscripts + + zabbix-web: + image: zabbix/zabbix-web-nginx-pgsql:latest + container_name: zabbix-web + restart: always + ports: + - "80:8080" + environment: + - PHP_TZ=Asia/Shanghai + - DB_SERVER_HOST=db + - POSTGRES_USER=zabbix + - POSTGRES_PASSWORD=zabbix@l1ve + - POSTGRES_DB=zabbix + - ZBX_SERVER_HOST=zabbix-server + depends_on: + - zabbix-server + - zabbix-java-gateway + networks: + - zabbix-net + + db: + image: postgres:alpine + container_name: postgres-db + restart: always + ports: + - "5432:5432" + environment: + - POSTGRES_USER=zabbix + - POSTGRES_PASSWORD=zabbix@l1ve + - POSTGRES_DB=zabbix + - TZ=Asia/Shanghai + volumes: + - /data/docker/zabbix/data:/var/lib/postgresql/data + networks: + - zabbix-net + + + zabbix-java-gateway: + image: zabbix/zabbix-java-gateway:latest + container_name: zabbix-java-gateway + restart: always + ports: + - "10052:10052" + networks: + - zabbix-net + +networks: + zabbix-net: {} \ No newline at end of file diff --git a/docker-compose-yaml/zabbix/readme.md b/docker-compose-yaml/zabbix/readme.md new file mode 100644 index 0000000..8d34e20 --- /dev/null +++ b/docker-compose-yaml/zabbix/readme.md @@ -0,0 +1,62 @@ +# 启动 +docker-compose -f zabbix.yml up -d +# 查看进程 +docker-compose ps +# 停止 +docker-compose -f zabbix.yml down + +# http://192.168.8.110:8088/index.php +Admin/zabbix + +# 如果发现zabbix_server起不来,状态是Exit,查看日志 +docker logs -f mysql-server +docker logs -f zabbix-java-gateway +docker logs -f zabbix-server +docker logs -f zabbix-web-nginx-mysql +docker logs -f zabbix-agent + +# 测试端口 +docker exec -uroot -it zabbix-server bash +nc -vz 172.17.0.1 10050 -w 2 +nc -vz 172.17.0.1 10051 -w 2 + + +# 安装Python3 +```python +#!/usr/bin/python3 +# -*- coding: utf-8 -*- + +import json +import sys +import os +import datetime +import http.client + +# 你复制的webhook地址粘贴进url内 +def send_message(key, message): + url = f"https://open.larksuite.com/open-apis/bot/v2/hook/{key}" + payload_message = { + "msg_type": "text", + "content": { + "text": message + } + } + headers = { + 'Content-Type': 'application/json' + } + + conn = http.client.HTTPSConnection("open.larksuite.com") + conn.request("POST", f"/open-apis/bot/v2/hook/{key}", body=json.dumps(payload_message), headers=headers) + response = conn.getresponse() + data = response.read() + conn.close() + return data + +if __name__ == '__main__': + key = sys.argv[1] + text = sys.argv[2] + send_message(key, text) +``` + +# 脚本参数 +{ALERT.SENDTO} {ALERT.MESSAGE} \ No newline at end of file diff --git a/kubernets_api/consul-node.py b/kubernets_api/consul-node.py new file mode 100644 index 0000000..24482d9 --- /dev/null +++ b/kubernets_api/consul-node.py @@ -0,0 +1,105 @@ +import os +import sys +import json +import time +import re +from kubernetes import client, config, stream +import urllib3 +import hashlib +import yaml +import requests + + +# 禁用 InsecureRequestWarning +urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) + +class KubernetsAPI: + def __init__(self, kubeconfig=None,token=None,apiServer=None): + if os.path.isfile(os.path.expanduser("~/.kube/config")): # 如果存在默认的 kubeconfig 文件,加载本地配置 + print("本地调用") + config.load_kube_config() + elif kubeconfig: + kubeconfig_dict = self.parse_kubeconfig(kubeconfig) # 解析 kubeconfig 内容并创建配置对象 + config.load_kube_config_from_dict(kubeconfig_dict) # 使用 config.load_kube_config_from_dict 创建 kubeconfig 配置对象 + elif token: + kubeconfig = client.Configuration() + kubeconfig.host = apiServer # APISERVER 地址 + kubeconfig.verify_ssl = False + kubeconfig.api_key = {"authorization": f"Bearer {token}"} + client.Configuration.set_default(kubeconfig) + else : + pass + + try: + self.core_api = client.CoreV1Api() + self.apps_api = client.AppsV1Api() + print("api接口调用验证成功.") + except Exception as e: + print(f"api接口调用验证失败.: {str(e)}") + sys.exit("API接口调用验证失败.程序退出.") + + + def parse_kubeconfig(self,kubeconfig_content): + try: + kubeconfig_dict = yaml.safe_load(kubeconfig_content) + return kubeconfig_dict + except yaml.YAMLError as e: + raise Exception(f"Error parsing kubeconfig content: {str(e)}") + + + def update_node_exporter_pods(self): + # 定义要获取的命名空间 + namespace = "monitor" + # 定义 label selector + label_selector = "app=node-exporter" + # 定义 Consul 地址 + consul_url = "http://consul.opsx.top" + + try: + # 调用 Kubernetes API 获取 Pod 列表 + api_response = self.core_api.list_namespaced_pod(namespace, label_selector=label_selector) + for pod in api_response.items: + print("Pod 名称: %s \t IP: %s \t 节点: %s" % (pod.metadata.name, pod.status.pod_ip, pod.spec.node_name)) + # 定义服务注册的数据 + data = { + "id": f"{pod.spec.node_name}-{pod.metadata.name}", + "name": "node-exporter", + "address": f"{pod.status.pod_ip}", + "port": 9100, + "checks": [{ + "http": f"http://{pod.status.pod_ip}:9100/metrics", + "interval": "5s" + }] + } + # 发送 PUT 请求以注册服务 + response = requests.put(f"{consul_url}/v1/agent/service/register", json=data) + + # 检查响应状态 + if response.status_code == 200: + print(f"服务 {pod.spec.node_name} 注册成功.") + else: + print(f"无法注册服务 {pod.spec.node_name}. 状态码: {response.status_code}") + print(response.text) + except Exception as e: + print("获取 Pod 列表时出错: %s" % e) + + def clean_failed_instances(): + time.sleep(3) + response = requests.get(f"{self.consul_url}/v1/health/state/critical") + if response.status_code == 200: + instances = response.json() + for instance in instances: + if instance['Status'] == 'critical': # 如果实例状态为严重 + service_id = instance['ServiceID'] + requests.put(f"{self.consul_url}/v1/agent/service/deregister/{service_id}") + print(f"失效实例ID: {service_id}") + else: + print(f"无法从 Consul API 获取数据。状态码:{response.status_code}") + + + +if __name__ == "__main__": + K8s = KubernetsAPI() + K8s.update_node_exporter_pods() + + diff --git a/kubernets_api/consul-up.py b/kubernets_api/consul-up.py new file mode 100644 index 0000000..685e382 --- /dev/null +++ b/kubernets_api/consul-up.py @@ -0,0 +1,157 @@ + +import os +import sys +import json +import time +import urllib3 +import requests +from kubernetes import client, config + +# 禁用 InsecureRequestWarning +urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) + +class KubernetesAPI: + def __init__(self, kubeconfig=None,token=None,apiServer=None,consul=None): + self.consul_url = consul + if os.path.isfile(os.path.expanduser("~/.kube/config")): # 如果存在默认的 kubeconfig 文件,加载本地配置 + print("本地调用") + config.load_kube_config() + elif kubeconfig: + kubeconfig_dict = self.parse_kubeconfig(kubeconfig) # 解析 kubeconfig 内容并创建配置对象 + config.load_kube_config_from_dict(kubeconfig_dict) # 使用 config.load_kube_config_from_dict 创建 kubeconfig 配置对象 + elif token: + kubeconfig = client.Configuration() + kubeconfig.host = apiServer # APISERVER 地址 + kubeconfig.verify_ssl = False + kubeconfig.api_key = {"authorization": f"Bearer {token}"} + client.Configuration.set_default(kubeconfig) + else : + pass + try: + self.core_api = client.CoreV1Api() + print("API 接口验证成功.") + except Exception as e: + print(f"验证 API 接口失败: {str(e)}") + sys.exit("API 接口验证失败。程序退出。") + + + def update_app_services(self): + try: + # 获取所有 Pod + pods = self.core_api.list_pod_for_all_namespaces().items + pod_dict = {} + + # 记录命名空间、Pod 名称和 Pod IP 到字典中 + for pod in pods: + namespace = pod.metadata.namespace + pod_name = pod.metadata.name + pod_ip = pod.status.pod_ip + pod_dict[(namespace, pod_name)] = pod_ip + #print("pod_dict:",pod_dict) + # 遍历所有服务 + services = self.core_api.list_service_for_all_namespaces().items + for service in services: + svc_name = service.metadata.name + svc_namespace = service.metadata.namespace + svc_port = service.spec.ports[0].port + svc_cluster_ip = service.spec.cluster_ip + prometheus_url = f"http://{svc_cluster_ip}:{svc_port}/actuator/prometheus" + try: + response = requests.get(prometheus_url,timeout=3) + if response.status_code == 200 and "system_cpu_usage" in response.text: + # 使用标签选择器选择与Prometheus相关联的Pod + app_selector = f"app={svc_name}" + + # 获取与服务关联的所有Pod + pod_list = self.core_api.list_namespaced_pod(namespace=svc_namespace, label_selector=app_selector).items + + for pod in pod_list: + pod_name = pod.metadata.name + pod_ip = pod.status.pod_ip + if pod_ip: + service_data = { + "id": f"{pod_name}", + "name": "application", + "address": pod_ip, + "port": svc_port, + "checks": [{ + "http": prometheus_url, + "interval": "5s" + }] + } + + try: + response = requests.put(f"{self.consul_url}/v1/agent/service/register", json=service_data) + if response.status_code == 200: + print(f"prometheus: {prometheus_url} Pod {pod_name},注册成功。") + else: + print(f"无法注册服务 {svc_name}。状态码: {response.status_code}") + print(response.text) + except Exception as register_err: + print(f"注册服务到 Consul 时出错: {register_err}") + + except Exception as prometheus_err: + pass + #print(f"检查 Prometheus 端点时出错: {prometheus_err}") + + except Exception as e: + print("处理注册服务到 Consul 时出错: %s" % e) + + def update_node_exporter_pods(self): + namespace = "monitor" # 定义要获取的命名空间 + label_selector = "app=node-exporter" # 定义 label selector + + try: + # 调用 Kubernetes API 获取 Pod 列表 + api_response = self.core_api.list_namespaced_pod(namespace, label_selector=label_selector) + for pod in api_response.items: + # 定义服务注册的数据 + data = { + "id": f"{pod.spec.node_name}-{pod.metadata.name}", + "name": "node-exporter", + "address": f"{pod.status.pod_ip}", + "port": 9100, + "checks": [{ + "http": f"http://{pod.status.pod_ip}:9100/metrics", + "interval": "5s" + }] + } + # 发送 PUT 请求以注册服务 + response = requests.put(f"{self.consul_url}/v1/agent/service/register", json=data) + + # 检查响应状态 + if response.status_code == 200: + print(f"Pod 名称:{pod.metadata.name} IP:{pod.status.pod_ip} 节点:{pod.spec.node_name} 注册成功.") + + else: + print(f"无法注册服务 {pod.spec.node_name}. 状态码: {response.status_code}") + print(response.text) + + except Exception as e: + print("获取 Pod 列表时出错: %s" % e) + + + + def clean_failed_instances(self): + time.sleep(3) + response = requests.get(f"{self.consul_url}/v1/health/state/critical") + if response.status_code == 200: + instances = response.json() + for instance in instances: + if instance['Status'] == 'critical': # 如果实例状态为严重 + service_id = instance['ServiceID'] + requests.put(f"{self.consul_url}/v1/agent/service/deregister/{service_id}") + print(f"失效实例ID: {service_id}") + else: + print(f"无法从 Consul API 获取数据。状态码:{response.status_code}") + + + +if __name__ == "__main__": + consul_url = "http://172.16.5.37:8500" + token = "xxxxxx" + apiServer = "https://46CA01C54B919FA35648DF454239A740.gr7.ap-northeast-1.eks.amazonaws.com" + k8s = KubernetesAPI(token=token,apiServer=apiServer,consul=consul_url) + k8s.update_app_services() + k8s.update_node_exporter_pods() + k8s.clean_failed_instances() \ No newline at end of file diff --git a/kubernets_api/consul.py b/kubernets_api/consul.py new file mode 100644 index 0000000..d5e85b7 --- /dev/null +++ b/kubernets_api/consul.py @@ -0,0 +1,157 @@ + +import os +import sys +import json +import time +import urllib3 +import requests +from kubernetes import client, config + +# 禁用 InsecureRequestWarning +urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) + +class KubernetesAPI: + def __init__(self, kubeconfig=None,token=None,apiServer=None,consul=None): + self.consul_url = consul + if os.path.isfile(os.path.expanduser("~/.kube/config")): # 如果存在默认的 kubeconfig 文件,加载本地配置 + print("本地调用") + config.load_kube_config() + elif kubeconfig: + kubeconfig_dict = self.parse_kubeconfig(kubeconfig) # 解析 kubeconfig 内容并创建配置对象 + config.load_kube_config_from_dict(kubeconfig_dict) # 使用 config.load_kube_config_from_dict 创建 kubeconfig 配置对象 + elif token: + kubeconfig = client.Configuration() + kubeconfig.host = apiServer # APISERVER 地址 + kubeconfig.verify_ssl = False + kubeconfig.api_key = {"authorization": f"Bearer {token}"} + client.Configuration.set_default(kubeconfig) + else : + pass + try: + self.core_api = client.CoreV1Api() + print("API 接口验证成功.") + except Exception as e: + print(f"验证 API 接口失败: {str(e)}") + sys.exit("API 接口验证失败。程序退出。") + + + def update_app_services(self): + try: + # 获取所有 Pod + pods = self.core_api.list_pod_for_all_namespaces().items + pod_dict = {} + + # 记录命名空间、Pod 名称和 Pod IP 到字典中 + for pod in pods: + namespace = pod.metadata.namespace + pod_name = pod.metadata.name + pod_ip = pod.status.pod_ip + pod_dict[(namespace, pod_name)] = pod_ip + #print("pod_dict:",pod_dict) + # 遍历所有服务 + services = self.core_api.list_service_for_all_namespaces().items + for service in services: + svc_name = service.metadata.name + svc_namespace = service.metadata.namespace + svc_port = service.spec.ports[0].port + svc_cluster_ip = service.spec.cluster_ip + prometheus_url = f"http://{svc_cluster_ip}:{svc_port}/actuator/prometheus" + try: + response = requests.get(prometheus_url,timeout=3) + if response.status_code == 200 and "system_cpu_usage" in response.text: + # 使用标签选择器选择与Prometheus相关联的Pod + app_selector = f"app={svc_name}" + + # 获取与服务关联的所有Pod + pod_list = self.core_api.list_namespaced_pod(namespace=svc_namespace, label_selector=app_selector).items + + for pod in pod_list: + pod_name = pod.metadata.name + pod_ip = pod.status.pod_ip + if pod_ip: + service_data = { + "id": f"{pod_name}", + "name": "application", + "address": pod_ip, + "port": svc_port, + "checks": [{ + "http": prometheus_url, + "interval": "5s" + }] + } + + try: + response = requests.put(f"{self.consul_url}/v1/agent/service/register", json=service_data) + if response.status_code == 200: + print(f"prometheus: {prometheus_url} Pod {pod_name},注册成功。") + else: + print(f"无法注册服务 {svc_name}。状态码: {response.status_code}") + print(response.text) + except Exception as register_err: + print(f"注册服务到 Consul 时出错: {register_err}") + + except Exception as prometheus_err: + pass + #print(f"检查 Prometheus 端点时出错: {prometheus_err}") + + except Exception as e: + print("处理注册服务到 Consul 时出错: %s" % e) + + def update_node_exporter_pods(self): + namespace = "monitor" # 定义要获取的命名空间 + label_selector = "app=node-exporter" # 定义 label selector + + try: + # 调用 Kubernetes API 获取 Pod 列表 + api_response = self.core_api.list_namespaced_pod(namespace, label_selector=label_selector) + for pod in api_response.items: + # 定义服务注册的数据 + data = { + "id": f"{pod.spec.node_name}-{pod.metadata.name}", + "name": "node-exporter", + "address": f"{pod.status.pod_ip}", + "port": 9100, + "checks": [{ + "http": f"http://{pod.status.pod_ip}:9100/metrics", + "interval": "5s" + }] + } + # 发送 PUT 请求以注册服务 + response = requests.put(f"{self.consul_url}/v1/agent/service/register", json=data) + + # 检查响应状态 + if response.status_code == 200: + print(f"Pod 名称:{pod.metadata.name} IP:{pod.status.pod_ip} 节点:{pod.spec.node_name} 注册成功.") + + else: + print(f"无法注册服务 {pod.spec.node_name}. 状态码: {response.status_code}") + print(response.text) + + except Exception as e: + print("获取 Pod 列表时出错: %s" % e) + + + + def clean_failed_instances(self): + time.sleep(3) + response = requests.get(f"{self.consul_url}/v1/health/state/critical") + if response.status_code == 200: + instances = response.json() + for instance in instances: + if instance['Status'] == 'critical': # 如果实例状态为严重 + service_id = instance['ServiceID'] + requests.put(f"{self.consul_url}/v1/agent/service/deregister/{service_id}") + print(f"失效实例ID: {service_id}") + else: + print(f"无法从 Consul API 获取数据。状态码:{response.status_code}") + + + +if __name__ == "__main__": + consul_url = "http://172.16.5.37:8500" + token = "eyJhbGciOiJSUzI1Nixxxx" + apiServer = "https://46CA01C54B919FA35648DF454239A740.gr7.ap-northeast-1.eks.amazonaws.com" + k8s = KubernetesAPI(token=token,apiServer=apiServer,consul=consul_url) + k8s.update_app_services() + k8s.update_node_exporter_pods() + k8s.clean_failed_instances() \ No newline at end of file diff --git a/kubernets_api/login.py b/kubernets_api/login.py new file mode 100644 index 0000000..c21e165 --- /dev/null +++ b/kubernets_api/login.py @@ -0,0 +1,58 @@ +import os +import json +import time +import re +from kubernetes import client, config, stream +import urllib3 +import hashlib +import yaml + + +# 禁用 InsecureRequestWarning +urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) + +class KubernetsAPI: + def __init__(self, kubeconfig=None,token=None,apiServer=None): + if os.path.isfile(os.path.expanduser("~/.kube/config")): # 如果存在默认的 kubeconfig 文件,加载本地配置 + print("本地调用") + config.load_kube_config() + elif kubeconfig: + kubeconfig_dict = self.parse_kubeconfig(kubeconfig) # 解析 kubeconfig 内容并创建配置对象 + config.load_kube_config_from_dict(kubeconfig_dict) # 使用 config.load_kube_config_from_dict 创建 kubeconfig 配置对象 + elif token: + kubeconfig = client.Configuration() + kubeconfig.host = apiServer # APISERVER 地址 + kubeconfig.verify_ssl = False + kubeconfig.api_key = {"authorization": f"Bearer {token}"} + client.Configuration.set_default(kubeconfig) + else : + pass + + + def parse_kubeconfig(self,kubeconfig_content): + try: + kubeconfig_dict = yaml.safe_load(kubeconfig_content) + return kubeconfig_dict + except yaml.YAMLError as e: + raise Exception(f"Error parsing kubeconfig content: {str(e)}") + + def verify_login(self): + try: + + self.core_api = client.CoreV1Api() + self.apps_api = client.AppsV1Api() + self.core_api.list_namespace() + print("api接口调用验证成功.") + return True + except Exception as e: + print(f"api接口调用验证失败.: {str(e)}") + return False + + +if __name__ == "__main__": + K8s = KubernetsAPI() + K8s.verify_login() + + + # pod_list = self.core_api.list_pod_for_all_namespaces(watch=False) + # print(pod_list) diff --git a/kubernets_api/pod.py b/kubernets_api/pod.py new file mode 100644 index 0000000..c4c69f6 --- /dev/null +++ b/kubernets_api/pod.py @@ -0,0 +1,70 @@ +import os +import sys +import json +import time +import re +from kubernetes import client, config, stream +import urllib3 +import hashlib +import yaml + + +# 禁用 InsecureRequestWarning +urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) + +class KubernetsAPI: + def __init__(self, kubeconfig=None,token=None,apiServer=None): + if os.path.isfile(os.path.expanduser("~/.kube/config")): # 如果存在默认的 kubeconfig 文件,加载本地配置 + print("本地调用") + config.load_kube_config() + elif kubeconfig: + kubeconfig_dict = self.parse_kubeconfig(kubeconfig) # 解析 kubeconfig 内容并创建配置对象 + config.load_kube_config_from_dict(kubeconfig_dict) # 使用 config.load_kube_config_from_dict 创建 kubeconfig 配置对象 + elif token: + kubeconfig = client.Configuration() + kubeconfig.host = apiServer # APISERVER 地址 + kubeconfig.verify_ssl = False + kubeconfig.api_key = {"authorization": f"Bearer {token}"} + client.Configuration.set_default(kubeconfig) + else : + pass + + try: + self.core_api = client.CoreV1Api() + self.apps_api = client.AppsV1Api() + print("api接口调用验证成功.") + except Exception as e: + print(f"api接口调用验证失败.: {str(e)}") + sys.exit("API接口调用验证失败.程序退出.") + + + def parse_kubeconfig(self,kubeconfig_content): + try: + kubeconfig_dict = yaml.safe_load(kubeconfig_content) + return kubeconfig_dict + except yaml.YAMLError as e: + raise Exception(f"Error parsing kubeconfig content: {str(e)}") + + + def get_node_exporter_pods(self): + # 定义要获取的命名空间 + namespace = "monitor" + # 定义 label selector + label_selector = "app=node-exporter" + + try: + # 调用 Kubernetes API 获取 Pod 列表 + api_response = self.core_api.list_namespaced_pod(namespace, label_selector=label_selector) + for pod in api_response.items: + print("Pod 名称: %s \t IP: %s \t 节点: %s" % (pod.metadata.name, pod.status.pod_ip, pod.spec.node_name)) + + except Exception as e: + print("获取 Pod 列表时出错: %s" % e) + +if __name__ == "__main__": + K8s = KubernetsAPI() + K8s.get_node_exporter_pods() + + + # pod_list = self.core_api.list_pod_for_all_namespaces(watch=False) + # print(pod_list) diff --git a/other/.DS_Store b/other/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..be530da8653073352f5e8720f3405b2809a5fe96 GIT binary patch literal 6148 zcmeHK%}T>S5Z>*NO({YS3OxqA7Obrm#7l_v1&ruHr6wfQV45vWY7V84v%Zi|;`2DO zyMY#iM-e*%yWi~m>}Ed5{xHV4vkXocGZ|wBG(?U{g`m08Rnx(UT+R{tc{=xF;a5!a zH%<8MO%|~k^VpPae*cF*kE1l}_dj{9-e~T%jF!GPMx%bu8V&~Qp0zq3 zfPOkWTd&*3;nDHM_2eaXkg+i6ixLg_L(JPma7cN%^yCuUJw-r)P3=jj`4Aj-o#Pk0OewoTg z{&otDhyh~YpE1B2V|VO8QTlBCRvwU3u0s{KhB>)Dvk94I|`7P8T&em8c V#97cT(*fxsAPJ$482AMSz5vy_N~{0? literal 0 HcmV?d00001 diff --git a/other/configmap_and_secret.md b/other/configmap_and_secret.md new file mode 100644 index 0000000..f4bc92f --- /dev/null +++ b/other/configmap_and_secret.md @@ -0,0 +1,24 @@ +# configmap & secret + +```bash + +## 创建configmap +$ kubectl create -f cmdb-configmap.yml +## 查看configmap +$ kubectl -n test get cm +## 查看详情 +kubectl -n test describe cm mysql-cmdb + +## 创建configmap +$ kubectl apply -f cmdb-secret.yml + +## 查看secret信息 +$ kubectl -n test get secret +$ kubectl -n test describe secret mysql-cmdb + +## 创建和查看SSL证书 +$ openssl req -x509 -nodes -days 86400 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=*.pod.opsbase.cn/O=ingress-nginx" +$ kubectl -n test create secret tls tls-pod.opsbase.cn --key tls.key --cert tls.crt +$ kubectl -n test describe secret tls-pod.opsbase.cn +$ kubectl apply -f myblog.yml +``` diff --git a/other/demo-cmdb部署.md b/other/demo-cmdb部署.md new file mode 100644 index 0000000..db1f44a --- /dev/null +++ b/other/demo-cmdb部署.md @@ -0,0 +1,120 @@ +# 部署管理服务 +## 镜像 + +```test + +lghost/cmdb + or +harbor.opsbase.cn/public/cmdb:latest +``` + +## Demo +```yml +apiVersion: v1 +kind: Pod +metadata: + name: cmdb + namespace: test + labels: + component: cmdb +spec: + containers: + - name: cmdb + image: harbor.opsbase.cn/public/cmdb:latest + env: + - name: MYSQL_HOST # 指定root用户的用户名 + value: "127.0.0.1" + - name: MYSQL_PASSWD + value: "123456" + ports: + - containerPort: 8000 + - name: mysql + image: mysql:5.7 + args: + - --character-set-server=utf8mb4 + - --collation-server=utf8mb4_unicode_ci + ports: + - containerPort: 3306 + env: + - name: MYSQL_ROOT_PASSWORD + value: "123456" + - name: MYSQL_DATABASE + value: "cmdb" +``` +## 创建和访问Pod + +```text +# 创建namespace, namespace是逻辑上的资源池 +kubectl create namespace test + +# 使用指定文件创建Pod +kubectl create -f pod.yml + +# 清空pod +kubectl delete pod --all -n test + +# 查看pod,可以简写po +kubectl -n test get pod +kubectl -n test get po -o wide + +# 进入pod +kubectl -n test exec -it cmdb -c cmdb sh +# 初始化 +kubectl -n test exec -it cmdb -c cmdb -- python init.py + +# 进入db +kubectl -n test exec -it cmdb -c mysql bash +> mysql -p +> show databases; +``` + +### curl 测试接口 +```bash +curl -X POST \ + -H "Content-Type: application/json" \ + -d '{ + "username":"admin", + "password": "123456" + }' \ + http://10.244.2.10:8000/api/oauth/login/ +``` + +### Infra容器 +```bash +docker ps -a |grep cmdb +# 在n容器node节点上 发现有三个容器 + +kubectl -n test exec -it cmdb -c cmdb -- ifconfig +kubectl -n test exec -it cmdb -c mysql -- sh +``` +>为了实现Pod内部的容器可以通过localhost通信,每个Pod都会启动Infra容器,然后Pod内部的其他容器的网络空间会共享该Infra容器的网络空间(Docker网络的container模式),Infra容器只需要hang住网络空间,不需要额外的功能,因此资源消耗极低。 + +pod容器命名: k8s____ + +### 查看pod详细信息 +``` +# 查看pod调度节点及pod_ip +kubectl -n test get pods -o wide +# 查看完整的yaml +kubectl -n test get po cmdb -o yaml +# 查看pod的明细信息及事件 +kubectl -n test describe pod cmdb +``` + +### 更新服务版本 +``` +kubectl apply -f demo-pod.yaml +``` +### 删除Pod服务 +``` +# 根据文件删除 +kubectl delete -f demo-pod.yaml + +# 根据pod_name删除 +kubectl -n delete pod +``` + +## mysql + app 拆分 + +kubectl delete pod --all -n test +kubectl create -f Deployment/two-pod/mysql.yml diff --git a/other/demo-nginx部署.md b/other/demo-nginx部署.md new file mode 100644 index 0000000..c9b5f8c --- /dev/null +++ b/other/demo-nginx部署.md @@ -0,0 +1,13 @@ + +# nginx + +```bash +kubectl create deployment nginx --image=nginx:latest -o yaml --dry-run >> nginx.yml +# 生成配置文件 + +## 启动pod +kubectl create -f nginx.yml + +## 挂载存储目录 +kubectl apply -f storage/nginx-nfs.yml +``` \ No newline at end of file diff --git a/other/demo-存储.md b/other/demo-存储.md new file mode 100644 index 0000000..55ae5ea --- /dev/null +++ b/other/demo-存储.md @@ -0,0 +1,51 @@ +## nfs + + +### 配置 + + +```bash +## 安装依赖 +$ yum install -y nfs-utils rpcbind + +## 修改配置 +$ cat /etc/exports +/opt/data/nfs 66.94.121.23/32(ro,sync,no_root_squash) 66.94.125.0/24(ro,sync,no_root_squash) + +## 启动服务 +$ systemctl enable rpcbind && systemctl enable nfs +$ systemctl restart rpcbind && systemctl restart nfs + +## 查看nfs +$ systemctl status nfs +$ showmount -e +Export list for test-opsbase-k8s-66-94-121-23: +/opt/data/nfs 66.94.125.0/24,66.94.121.23/32 + +## 挂载nfs +$ mount -t nfs -o rw,async 66.94.121.23:/opt/data/nfs /data/nfs/ +``` + +### nfs.yml + +```bash +## 管理员创建资源 +$ kubectl create -f nfs-pv.yml + +## 用户申请pv资源 +$ kubectl create -f nfs-pvc.yml + +## 查看pv/pvc +$ kubectl get pv,pvc -n test + +## pod 挂载pvc资源 +$ kubectl apply -f storage/nginx-nfs.yml + +$ kubectl -n test exec -it nginx-nfs-test-xxx -- df|grep -A 1 nfs +66.94.121.23:/opt/data/nfs + 411706368 58967040 331802624 15% /usr/share/nginx/html + +## 测试 +$ echo 'ok' > /opt/data/nfs/index.html +$ curl 10.244.2.227 # nginx pod +``` \ No newline at end of file diff --git a/other/deployment.md b/other/deployment.md new file mode 100644 index 0000000..790cd7c --- /dev/null +++ b/other/deployment.md @@ -0,0 +1,11 @@ +# deployment + +## 常用命令 + +```bash +kubectl -n test get deploy +kubectl -n test describe deploy cmdb + +## 一般重启deployment,常规操作是删掉对应的pod, 但如果有多个副本集的话一个个删很麻烦,可以执行 rollout +kubectl rollout restart deploy cmdb -n test +``` diff --git a/other/image/jenkins1.png b/other/image/jenkins1.png new file mode 100644 index 0000000000000000000000000000000000000000..d0b17bd4d7f1ed859eaa3b952fe5517dd10a29dd GIT binary patch literal 379623 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
_?z#u`t5yT`32=M)1dH0> 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
G)kqi;Y%)b2GDG$Kh+#-F$?N6hTI1n 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 z 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

    ob{n;>6684Af!r1>FjfTd| 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 HQ0!WeDL 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

    wO zpcACmn!CGuTbeqLUyhKhPnJia0m%jE_bh2J15KEXwY71n<{uwBs~)wy+rr(pWT6rT z@$Lsem2(uA(!Tg$%I>`!ucfnGzO~hg^EzBfpx}%T5A=-PpW;UWO|iiD&-YK7Ok_`= zcN6piaYpa&gaJ|_Ur_+J01bw+Bxykow;ty&+p+J~gUQ^z647!4?N5||}{Jj24)78Y86mkvMzJ}jdDcVUEg5l4LRD^Mwkh!gN$ zP$ibJvlYTll-5ZLyyJs@aIYuCYisEBlH~wG)f06+I`t7_bn~Td4X@@Ipsc~F?eye> zEoRbmrJykXD-epHQ9*hrx`?cPix}DYJBu3$Wh0f9!rYROk{n~KNpS1l?r>1!j?`l^ zCNkOT--xLtysI$rFh>8`t(}DE2G+J|Dgc1+@$qdy*9FmR8|&-&g@q9QGu;c$z2J-K zyB(@OWW^h3pa-G5kVyyhjX(nzS62YzB)J&;4h{|w?_X7BSnwdm-s**V_25|l<=Nf9 z*^4Z+*#zDmZlF9L6A=LwL3etun)+KqDqhH&g-j;k28LxWgM~y=66Ip%l^cx85XOMK zRk~FR!$dEy`+JKR-=yJx2?6CQ%m^a(XJ_V-vwVJ}otuHp_r_8}EXL^Uf&wBU_?h77 zEm`|E^h=NFVbt7n8TOc0gCg3{N7tl{eORT(LxrPD^2T{e0i@_t#Bh#{%{V+V^j4Rm z1@aCK#vai0Z&mOcoJqM#Ao;UqKQmAZnmYT5^`uDqi)c=?cP5Oguv35a;srLWmvFJ0 zegGm!6WaEXv?^ICoAvf>=*qAmd@eqv=UA( z*RPjbp*8vM1 z{ogJ6UVFLvKu0F$BoVD|7qLy1~K?N=$!uH?UhEgPzv54&E*h)q_{IGbYKk z#&jW0eNbpbi^d|CB32#5x8QF+s+Axeg$2Xe=`G)#Tgy%hd-`?ZvsC9fMEUqc`M{Z1 zg*iroIfJ^OqC)LECPYOR(jswTxd##&tS`^DFH%mh7Rf0MTQSE!)dZ&0dm&e_(EscQ zYvs7M7W=V?C@8YrfV%2DuS zWd+MAe^l5*N4O#2!|TQl?|8e_?%{y~;l6A}6f7c6Po6)>>UTv%4LY{gXfBJ2OZ=T2 ztPvO?o<5LIp)bMWEWZvFnm-qf_v5NLro2hgB=RM)77g~uWt5so9U#gOgOZ4_@0{j z?$5LPR@c^QGsmnr)qMXh8*7XJ+DAtoC=3*I2<1{EK#Qe#vXXX?0~eX?-hpl;kc3k6G*NM!-7p78=U5d@t8?e+D;bgUmRzi@MZvDe{1RXaJe#&o`4;u}y? z2LkNi?Cv2|pa2Sb_1m`*CpFl+*dkmJ#6ljZAO=!^R72N@x6>V+@#$`9$KoU{$FjTd zL`JS*tC7WDtqs_!>#&m$ge9zViyJ=QKCHWZ^0kDN5cQxJSjXSjpqx2+N7g(wYSz-z z%G>M#FR7|zX@;W_nCw79j}baO30434T{cuckS&TK;QEueiJw!OB8(IyXmS7g`g%Kn z_dJ`-JmXU9dp}rP@-Bm-`3wqBkd#ipvs8gGZ{H$8K8W#2Wkm&OL*vx=GB}4Z8&%~E z6*NTIpqK*8c3^N2J-r2E24BPJ-l^XMy0{B#HbR*uXZ`LQ`2CKdL;~U?rE#!qL|rkh zrIo=qqu6~;iwk`YFF;zjOD!cO<>CS*uZVWG#Cv0Euv@tg@Afs+eRFqXZPSBTSK8;7 zgCU~{gyhGtV1xVtGQbk0rA!CU5_{XY*lZ+6Oajj-CF2t;&#uP{@(gKzP(k>xyEf2% zD^$yAsp~G=b#1xVr8dw7=$yyMFeuMb9P80*sOwhO&$26i2Yw?^#=@tt0E76u@Nu=! zhRp_$?pDFe05BR-JW!72!B(c-4%8UbbE$)?n_w!c!Rm5diir$aH%R@D5Gxm(wpOq# zzv<#?S}V;|$7=(0j8Bsq`pN+YR66Vw5fR#J+Y(|-Q>G<-t*H|sC8Th^;6)6YIxCP< zk`D~3$ZMcLu0y>i8-NNICy}@w0}`gUvekgEQ3NxEILLS9TicBLtlsfRitU3yPxb09EJ6Od!K(E1w&@A+rN|3)VJBTs$?Vr}~0b zs(EW%L8x^WT7hC#^bZu~0nr1JVhQG0>G!qsa>bc%K5zF5K$4-T@2q^Ww4%1^!sIw1 z4mOUAr(V9tF+p8y3E`w{$O6s0Kwyxo|f#w^1@-|ypLkcLe3w*21E;?9|JReWywf5nR}`1iggEnVACZa zIS!24=TTbVDT!p-QOFJ_KaphbMtpTZ zOgW^1=>G9xjuz;)W$gxL>rC*RHf15K$;$i5vjUGGq@s=m9A+=gX~z|qaK=abXXb=B zxUmBaf}DjO{{bTsMgoZ3sr2Hb(6(G>9##GauOABn{*!gylN?_F)r7Qb^>sCVXYg>m z#N#R&GHK8p{Le(GYJjL6*9IiEi;r@F>j^soB^5mPk6hHD9pqsxkBRnT$tWQUr?E^B zA~AJUQ#X4^afpJzgJX32u|`t7T*W6v5#gs%GB@qe&$hn|eH^b`9jxGWF0b5i7v@)B zpy3+TA(Zb(Y1q{3S~wCt?d@H5lFfJ%+H$>Gr$8;&Sx^_Wf_h9V2??uawl)@@z}w5= zMe5eKDsrsz#{_T-us%CZy-{THvK}K1YcW=mv5inrR(WLzOALc|E%Q78{Th191L-ZL z3+O*43$Zk-pyEqFxIaJ+D3QN(a)e34CLNC5 z0dP|GCX|VKhJ;1gVLfWI>@B?*L!NOZzXJr65XC2CQ6ZUDtSnv++W~$B!RTVa%!&$E z>8K?$OPjphrn>|?LlfKD>l@JSecU9)$6>KdBs#FtG%tQK`2c1?fRqv)J^a=dro=Tfaf?z*IRU-m@Oh&Is(8F$2{WS?dDZj^t$X5{hsE3KuXZIv3BKk z1W`xrI(EnlPf%=*ixNlbJdk>|*ObGVN@?@HD#* z3m{>+QkkGxT2EZ5daaJ$3;}>A^En7EhZk(FU2#LjPB)#pIj}^^X?AeA>~cfCZP4N& zBqQEum`GI<(ftV^P?d5aU#xdi?&|NE_l8DhSX$tX8f`o|(R3-?kSMfOPzZXUvgY02 z&Zi6h5$b)+Ezyz@8VujxC+DAQPACY+T(kjs9DL*~;X~I0Vpc}O`tG6O$D{3B3-Pz% zY^6(HJm`_?8pIYEDQK8TzR%BV{jR8^^9{q9127wEEwSC4l4gu)I9^EKC{Q3ke-KGt zq>i=bHZOk1O?_+65REK+>PY{6g+#HAgD?$>c}n>ql4+x2-6qM&cNOrN@U;X4+5(>i z%a+SVeS9Fg;-Ud>wx?NOaKSAwyI6~*#>SkTepyh6G3Nq)M*fy?W8A$ETPq^M{Vp0p zh6g%2x`jt*c<5SRXtPB(x6y=|a3t_|zQ;fJwuM`SlN(5j!eA#zo1L_0B%7g9wMG%6 zbSB?UxUsynvAW)rdx`Lid7mZlf_BszzNpReOt8e9y%sPD=2bgsU(N70 zEZIxnd}bDqx!kc{zg}PFWA*NHu^T53&t04MC~)cAn07y1`~B<=$;OJx!NK0w0luK~ zPH^r0p1*)6?V)hI>{VkUrPjK(oaGhxV7+XWg1OyF;jUmwu^1)4S$?DiE_?~PzrU?; zjZkCN&vWS+4%Dz;UYRd|h+4wkN4>L0a?n z8X)GPwAlNqMc=$zH)^n~k~;+om)88G{B;q3pFVy8g(!wG*z0bb8n70(+P^QT#F!_M znecE~1z4S#(b#>qX zAA6K-))m88ml`u(@2|++J=kl_y_8aTl-obzyBAQ|XK}O4KBmq0S8I+OqpscPJg50- z=9X2zeu2uQ_wEx{^;>}kTepR~vWO$py&eP(#HWKf=sy_&1{kTJxCI@EokDL3`+E3n zTlIIH{qr^bFftV!gg(TyFITgZfuhIuUP9O8#ObeLtst#Kx2AlRZ_@!<^$jZ*^>r7o zb_n4*)&CXP*+Z@Qr)ag=fXyE~fA`938&@uN6L5W4^_=allVkSdO_28(rW9_h@~WAm z{;{W)Q%-JMq?FI*fkK}>`GMcH8{fNoRaASm+hy5FWa566`sj&S(;d@ssJ4fyIG+nH*;i~p2P>1a+$F1&CLsPZymfSTyc29dRj#*V#-`0Z< zSrLB&Z07Hi{GzU*pumx(VM>*)@J-toQCrXZN5~})d&os5|Ng!48MKFI%~kdqph%TD z_}G_IymtDes*or^B{McgK{@79u64nhEHvXj(?hQIy0(Gwe$4`v`X=dA4X5FDEqO|~ z*d=T8<$P2b=9z_3LW^Y(+enPw{oOLZx1;rZmOr$WUr-q8Mwx>)6Pu?$*x_~>=d0vS z+{eLe3uMV>sC>SN!nE)yNyRJgzJ4Ie3w#SKxH)cKGlUZ7agXv!dtpg~Tv|tu4dNE_ zz-}k!c7c4(Y@87@-et4v?p_WiNj%|1gxrZv{1ra$1e}NO+z^M6u}MU@%apxP?c`dF z>|O33DH@NRKlMAZCF(E+s5u;tE?Pc_HSXY2))w+C_wa5qREPX8Vsr^)-E~Vu(QmbG zcMt!q+A$7%l`Ioa@Afa)4nWL5K>EGR!t795u(X_s_xe5cx2nbF_ zJwagrl?!A8YRn&E5=UR~kx+z6z*Y5j@^Wyo;p-wG-WR83Z9AX78eh5=E$LcVk!Y-G zOYdOsyj~H%XL!TzajFLX!TqKbR7&&Bl&mV9sHpW{Y$61*|TP+IL#wEtNy<>;;E!xm$D zGDrfY3sSun_ke{`ebCa+E<-Cu=BC1`Rb}So5y(;YWKSBBlYbr7PQ`dT1Rpctx=(D9 z$;gP2g0n;|B%_3#%958ly8DgXI#hoCMaA5=KV-|*Lcj2_6&7A)uL4xLtBajdct7>b zm2iVC&hXj&o}dQBvTo#|onO5lC7`lSR zq@I(K_lvF2fibreGZ(KI zE5zU*reV4V(*tmGRdTP2=(p+V5fiS^u~)(5tp-172)k2qy;t4R@_y~sunqc6Tq;t9uO)mOiYO`)zI{S?{i~8VUM4b0v zH53H*k|k<7n$I72{&oYFep^FZQ)#gFPaO4xbFuGB71{#nf3o{mu6oreWe?<)epPhR zW%@Ybd0d=XdR8lYz@kg-#B`C;k!{p@!^D$ML`Xz{=PpcRb*~o>XQNB!%b(VFQ>|@! z8k!@fq%1KkG35G7g1&}#>8n^jbV`PEu=ULR)B`73Mf>YL9vbI0b zG|)NGH}~tU4;fZkaM<_>cqV*wAA#LR9ptAB9fAK{@O^r_;ST>3@2#ih9^uY zbu$;Yg*Pj--{K3DDKV?7{Z3ug(W58P=-?7RD@ZURDAKqUkmfC-mDTauU}$>VoE}BH zHaL8T3t$%HN}k%~DY7nO0>Q}74&^w^nq)y<*7I>$S~y;yW8@BF_`Fi>@oc*Iz_2;= zZ^lqh6uSN%mw}nNh7-oovR}4j=VhJmkO&ChD}VQz0xYQ_k&_3xs5_c=|L4G>cOy** z>x0U-MV$)j*^eOAS7#=B1fQ(ID)VJVAkNwiX*K~on(nq+aE6BwH2L!+ zI&nvi3Gpjszjai|mCb(6yT4CdS#iMl^6T1j3;Ows()&J%58irsfJo zfLL>2nL+0{YQ62%8q&9sWUC{(rLgGE>H4lCeT%H_~U0>^< z`pKEiUC}VyKRjL3i4T4EB6Hlqx%3t#O}4n|wb+7ABDb4?#)H47e;SyKe5h=vI!E^R zK>OqRFP4(xD40aF0k}UX%uTaZazu~Z4tJPuk>OE{xtuI<0MCAGpwow*bTEQ2f{56s zWJdYh{9_6cix|?8s=9_#qn0d{Z<8K%^dG*NJ%d9KYF+gjV$se%>*n)kil0P=gVi!Q zzU19&h+RQ*uqH}pHWw4dtLzNS9wyrmBHw=B#)F51j`oU!hG`c&oBD}Cx`9`x!3`N~ zJqU8SLt-GHa6j_1qg__F+0l#c6aRFnT{eFoGA-zJPwiOCYau;2nGD0s33_&~Lj|m3+H5EwM7V3udE#m~ zl%VeE2es}G=|4;v@F!1>i{iBmkUI>&z@+v&J)q56q=cSXD|?Hdwfc8Q4ma!C#Lybcz3%w?vZ_I!9m4nOOx1eq zmxn7mf_#f5`}t z&7%x58ANuCm|XDH7gvi2582+Oh5~>L=3^6K`L+(I!Twa2(GC#ULr`y`pWSa(PxIuv zufqxc78GHDHnys@6K`mIAFu>T#q;=TjE>(V4?|YEwOLF>(@O#R(T@fr()_C&lF5xk?dl zH!r*Q_9N}lM|aKAhd+9!E;V(xrVFV1+CJW&SxGmwOuDiH(>c6Na5>A3Z8;oWCer(b zb>A!JzTJ8X4LA%6VIGF|o#vbhVzdED%d?Am;fpD39xyG!yO<}#wOPNXk+0O8r8B>i z!g{PCd-zJhANo}3j2idrV6qTrK5n$5`a7FemeDwflLPCzXk3t6eZw6dj}Ig zccidLo0e%-XvWU|#%X)sm)8a_81T#jW~+=WO#e)M6E>uxy&~9H1#Oqa_0&;=C(Lt5 z>s-8-|8u%ng4JcXJ?RRwTT$EUSdQqJ6?a(R1%Drckx%`rO?ERYf}14}=e`}nu42o* zpfgZF#N#EKsWpl7+q00*a zt1sZR#^3X}f;^h)&Hpkf;L&`Y#^hGC8_MF#A=~?NOR*9Cj8u`Vthl}sfDk^z_n>I% zmQWhaFHSUtaBH={&&8{JTcV!_9aMyn<*U72%zA9rnE?e5c>wl0$gmbl5^;}@VbdD~ zVA!c5tFNOFui#us7YtNz3P?Po#g&SOp+vWkx1z!Qt-v0C-VOf~z&|hUdE7{lPBvy= z(5-;u39{rqmyERz2dFS>zIXigk<@Hn(6@AkFy=dX6hqR$@B>};K!YC-p)gQsZ?1L= zvNA@|ySPB7?B(V3%_R8}{<$CDty8P&D6DwR(;PUGm-k6W^y%i_LFj4`qlB4B8ZZT(4w8JG+I z-(c$18OZ=g5TXkMK~15PbJFqB;fV98iIve(htx%&NI_-Z*!pGEf3-V;XzyUp>*v^L z|M0d^_YE@q)Ufn+b9&NE#oP%m?nyK5(^Ir5s;jGZtzKl@4)nQjQ6u8&sh;jCBt8%Y zhazFQY!#mh8h+t>-4TTB9`Bz;;%UJ~%#fwLq1=#Dp_ArT+~5lUWF#XDpLqc#!_9BL z%FfG>&l|7~slfAgs4Vk@`6@>FT-6-D*o7LwJ{U3E+~{DGB)8q#5d<#@7=3PGq~QLk zxh0DVv>|N=^IXJ2k^@AF|M_t>+|||jo|avx2nn<&L-K7oSx1Lced?x`R}{rPQ5eW^ z$UkbnVzF0iE35>ASTZE!1WRB6F^4AXJaQKO5780;yMHMuTr5Sh{?XBk>oF{<`b;ix zvUFQ4=33QgcEjz+iSTWFtl-@B>#24V#ocn_9Cy!yG|i$^=IoZsYMxfcOQ=SHq9`GO zHc}jeHu<*g@=P#oyLBVB&ED=JHKQXZxVY)VJ!4H1&EHK%Wi&C7E-CP}_!vdsv@2UNgv; zrB9f>Obdn?EZL@`=e;t_*MMvBptMb?2A*-+Y|;Uq0zXd;PZFSTYTA1N5Fh2J86zu6 zj}mRu6U;9~!_0!7N`CnNy7~@ys@wPf(^h09#4%Hm8RA%xh-8#9MMi6w=tXtvb6>#fiKJa1)I7Y!_U&5mGt{ei9cPTp5Ee z3PvlJ*RxR(!L%Z@X&08oRqnnidT`_~I!zX)f_iB5dDws-k}NZjmylvt=ZYWqPWt5t`>?uIvvNpt?HO;5y-JjLoWD&<`@@xcygwbr%hzEZEntr zCkmR`DfSnNa%Ers+R@wcxzBpsOSN>_o!i#Yot5eiA~8XUTqzBdG3kR(;|TycK+OS1 zSLjdP=Mq_|v)I#k(?8o`D=e}S-R?ORmu8W27-@C9QmpST9g{n zLT%U>q9Ttq6&Wl#PcY@kr~H-;OTLli6SX9sAR?hh>_=SxT1raGH0?A#`RH{ix6+vY zgJry_V4XPDcEh3^kim9V>L8B5B=fQ%Ghht<*J4-jz@60JUtUrI^r3(#tA&*A@P7Vu zmmy=EMcI2WZ0;5=7DyxH3;4V5udnXb>R&m%x+YC8-VW5Gx|SDEpi6br2WKxZF}8|W z9^YfXPL3o25BlA90_1cVrk_M9v4kTSoSu%3OXUzOAc~fj7QEfTJG8G?OrGtY^s9$8 z#tU;({z8E%%NdeKX-nd|EV3Ah8r|H=Xe3BWK!mG$C2j!?qg6vgk(bY++@&S6$ti%o zlC8)?CVQs0IkS!Q0+`AID`wOfQFTi>(?r#rccctk-pNLF>iubdeafa^qf1k>!TJW4 zAMQiUr2zej0jCIQQma`ebfZuakq>(WC#>%4MvicW_h;h?$uGvNw{5%3CcD>Mk5KsQ z$8)&~>c-i&19acY)HY0Ii%vi@T|IXRCZE<%)xQ=dHy50IQvCFDHBi`HykLCPAXi?1 z#0i<)da1$sPrC3VBz9m57MTX_1<;Tj9jy)n(Yzn-d>bGQlIFobxfY@D6qMfAT`R@gaV-bFXYY)4)^EA8 z?gLv-!gbpzs|oU`+D;B&_T9Wo<$kLD#>DCXQ)oB+>1R6gc738^zkVEVUx6!iv!QG9 z$CufH#12b;gPE<}xuixB!5?7=CLCF*N$fXu@ieXch1Vi!YPe45CZQ7m3jvTLg!J6$ z?W>-fP|cdvbavxTZ@l5`1T5=vR3qQy%#>3X3vanK2{9}x>7_?fD8(pk=b8<^trMQ7#Afj(D?5mLCy>P~W2)2`Eed0fIMeGqdvu{j|YoP2ZVzal>@T6o`=wbMS#lZEl~#ArzhDUxFb>Q>yLcETI$Rd#^% zDi>wto>6X&T#!EPKpiLzl#ZX4y||X_)U3!1*K>PWTx18*K^Zab)E;CCG*NEH`x^Jz-a z*}~D?z4!Je$wT$U+ik3@;$mY_Qi*pUZAF2=yY)6-X`#SXk<_{Q?V5wNZpqD{1D&il z2a9C;BZwN!NgpttdpEpr0u>)H`YP9Xc(1mivDZ=vG4%uO=B@R0QoXF*!QtIbw}mRT z^!q3&WW?(buMWYc!dpK5eq{3po^mZ*?;)#2R8)8Okd(~jh#u~XiFas88llDp3>31f zA2;E{5c}C!6N|TVj{STRrQ1Jv3?dmLgyeYZ5D3X`mnuD7EQQ-?8{`1Hj>_et8SWWS zVzNi4sdEmJ20`y*-OT@1s+03NDam$j`Yj27!TA7mS-E;JHH92xL@e{$k^hJm?1Oz7 zFVNpD3NKR!(YH=yNV>;WUyTV4$DfDcM0&xxO`lxpTtUJ2{bHEc%|?LBazsH}qwyH) z3;5p)MZ++JE-#%q73FP&DUDlUfRV78mte9_6VjK8c{!n~j@)IfnL>_u= zufb;5f6%&`o9bZhU{Uhg!Pxmgw&wc7pvm!tPmw1o*_;k_Q%=s!)fEn9OYHI5r6I<- zu}w3+XidH0k7~_Fy%#`tmhSWmndM}rJwQj|37v7e2dmY43;Q#kyH)BqXhLGQKQ~a~ zcEonX9&Ta$9-yCW9C%n;&!^rYsTZEhE}hFVDpc(IK5BXFa-F+BtGRR?MrZrVD|tV{mPxqBMkR0cL0DB%rz6NE z*t+M<5{t|g>Fsy5Hyf))8lUvp1Z9R3C;+k9ZlOLx&!hV=kUrV2_p}NKt&kLG^puEm9ZOC=?+g8HucQ&k9vBj0B_6Edkm(#9p_QI*75zH30w*n z3|!s1hVLkNca`~53hUINF5uhc}od`N1cWJw0wD%kW5Ds-T z_1?5d)98QtfQw%+Uy$$yS}VsJ?V$8{VPs+Ne*a>G%aM-xY@Vn=u2;_!Lk3qny4tW% zNDmp)5V4zqKI-hk!VxbWo`V#h#-^H zm6erY7%OUsu8%k<_nTNOtcnNOwaR0NoU3-ndBfSXvea#CY|Q=jMdq9JTyv^(PN3R& zv!!48$*@H`^p5d!pvaFNLX89O!A~08fI@DbkM0r2h_c+Oea{qgMOoUd^&&%mPen$DV)zl2}$g^bvkESS5}S-;5F5n+Shq zpE3=7-EB7nTw(KZv)_u5V#8*3$-m}P4y8Zs>XHHl2rpGclMys1S*dI4AU!FR8rvNE z^Z+OF2?ulbwG1z0r0-JwDQ#u`sqLLFcr4n4dYtQj-m`Gsvuc^<8%Hg^7igVM0KAH(sw&nt{#$= zz&diCwcn(I=}3$jljy#UU54@QK&HL zq-m^r5~xY;{Dt%?)*XV}ubu-nMc)9ZI%X;AIi7jHIW;Z^IkcICuOCZ>CQ=9fWwR0F zj6<61&$6@aY5haONcvkYLPy!HyL4BZx#dU8>&D*9PKZimKcF9GaQ>+abo(Y^yMCDf zyOw$$#O%GLP=D%)(SKM5?)xxFkfl!StQmRwxGzw!Dw=sBS6*Qy7_?{P&6tBPrdxQ>T2 zffr&tVU!f`FxyxWb0M(p;|M(J1rSzPLY6*8h>*8tQ9f!6*d7Y}Dus%i+!JY)a8E1y zgqd1F9oWp~U=c&BL_#(ltBxC2n@=WS1KCVT@CJz}xV7LO;-osYb3*Qsw|xGsp!%c> z2y6sn`)?F3z>6A3Sgb+rlz1N->yQx_S^CR2w=Vp^=Jy6)6w0U30J}tWo43K?+qo2GIog?9H#)$e z?rOTq+$>CQht(yiUrr2xS0lc;B77|1v6G`23TyuGA!Lsc&Ertg=$!A?Nl(@0WVT&H}RCtdk`W5G(UkVZ)lZ_V}K*%Gg-oQ41tqEjnKsDgMYH9a< zXhOENDMNx1oFpG_=M7dNOEq10vZ){~WGR+O&%%X_tT_sR84@h{3?YGVehiHV3}aa3GC+ zo>enoaHz8r+yw5)zUR zIP-YI!FJ9;Y9`EZKDqFo9V8dy4@Mf9!ju&yu(o9D8z3ID;rRHm9a@7cf|r+9uCW2g zpDM-2`mwS9|tv=@hk6lRqr^%;FTwcH(_v?*U!@?L2PrAgjW!D@$uqa2Q_tGJ1HdV3%5NPLdi#^jTuNAK+Ui9-+ja6q z=nPuT%?2dR2-ZQ@4@hNfRQx1oLT-+NDt4EdAQGe8ssEjlZ3i9flTRy*Iyz z;8IbH=NKI|6@gH2ElBa=PSnA&-XK+=Cpcy;iw|20!2k~YhkEGl?rveBkkcI&7DfgS zf{Y9%PE=FYH(Pms2%aH5LHvw$@WZjgK=(&C!azT$A>=%r0u7$7;;IPHBF9ZVWZoQW zI`6}b34Qc)b!lm-`(UcO(f`)O#6!g zpfmy_ru~D1t>gAE6lUDJmNjQ);NaB9cTKcnnhdCL6FNoMtmE1u67AbJI$SGRC{Ic# z&wTrVDgayJwxR2mh7NEE8yAx!HMu=d5xpg;GKJ|t$*smJO5rOCCW13NFAq#jPV&)` z{Pz>;_JN5~c{b3Sdlc(3Wf`qVvJsdC!~Dc1Ie!8gT30--%LiIRf>TJyOF2o z0hm3kS1^aVz;h^|nPcr583{9`VYqrzJ>%j6O{E`Y6HSu+FWR7mTyn2U8 zwZH#j_)^o)+Akv`^Yc87c6u%wR&|>Ig8fj)!fHG=&pn_)Gt54I{4r4?5)a)!ps*SX zaH<8W*{~zj8LO>KuJ)D1+L00Ffzc=N##+&-S}?}@Huf!FyCPs1ki~t0L1+bt++4*m z*C33;!ww0@&&2dY8f;xID=A8nrGp&@s-;C%D89tF;Ug1+zeZU}8R^Y477;(qV=maD z87D9fbirRaJ1^g&ytkcuNS6tw?O|XJ6Y49bou!`B{gbF10El?mr*x2<;O@CTyf5l)hyYk%{v^+aT=19DQmc3OCHFI=7SHIpY9ziqXldWi zU)bjz?g$Hey0(|Vc8d~WS0u{&G=Aju7{Ao~EEcCvbLttAXfLg`##J6kzAh>LtGa@^ z1*==m(ABi`$|2p%!XiVHYgt_K>eV#|$qffvIcBPLGSUk|uitpVQQhmy*?$DF-gyWF z;gBOiQa9;Xmax~G&}k-^Mj-6p`E(Dcy{%2Z+SaZ6EcodzH6q|#V2VAkXv*5~m}`cy zf=UQaXWcp|MNLnhovKB|3i>IqA-877JM+~%0bL8mXsUi|a1GX9pB9 z#Kt`toCI))A~!_vW2p!auroVs#bpf}^NtlXcQi?$E8Onp~_^chs<(sqI4) zcC&SOw>4qwT|$#dKIltmX8~BXolLlvA`N-n+&t5#OT}qvtE4kr1*$fJ?lorHi?ns0 zbN`S~*r=r3QtXX8X<%h+xLVE2%SR3YfflPHv2h$F#r&Snt8v8|EDoF@p8^@HC-DJd zAe<(Iq+DcD{}vo&o9PML>5>O4l4<62^X}lcUcE?M{T??p@(h;`_*lJttai#9CY(!1uY&NUu2z!5!X-NNixTM0I(^Thw@}XNma*af6*tJnW2%qk+9$ z@foamTTMpWe*Aa|sK8NxXAk|$O~BH)R_=prgBK0|yB5S;qLvuC8c-spcLAOZ{S@f# zB0Ny~2VyfZ9RB()DEM^sg52-f&3uh}%?u2k4<5RF92S?5y~`#pRjTu(idtN(8i={? zoO>@ATq$57Kb2#1>RrC2O7X<(t`A}B5^+3Z*713L5$mT81a=3Dc%fiYviVsi02g;$ z3x!sKVKD*yRbeuLin^5#7%=}Ni`K;TXZ7x|Qj1wlz&OIM`F$XC8Sww@)mH(j;LI?>yA*^nF-IwDUU(yDWuoA4mA!1x}iD5oVwBOm~$pF#*oOrN9kXrj{N_R?Qm$u$2%?3x&Bp%0Ga?96?Y2p7@C z2q}7{Xe_Z`ev}4$1fBGw=T8DF*lY-Nz~4vI;lm$dKwaIKf6Avnd!|#`jjIvzMQ9E$ zN>x90(q<(Gpb_=RT7Qswc&zvan>0LdweRJC7@o0)^FE2q4YslH~vcPzzVLxu3Zv zl4kY3noPU2k{jAalrMUO#GcwaRZWCVZo7&rXCmM6Jz_dq(mt;IRnrFto(HA@bbX+2 zL8k&3Ja>MBYANM|VLFC$1<`4+GYahPv41*t9ysNC-7|TuFry96yyR;`SChGuQy()q zk$cTY1rAT~h1bvP5#W6Jc=EWyF>tE^kNM9ae`>ZceVHcI=D92@^rgcUMh;Df++>c$ zh&1M?UILDA{LexP(;X=B=5M7{&2@HN9kvH1y-?4Q0=-Fl-0ZW3w z?^?tY%f)rRdtn4!giZ<~;_v#D*dVIu%Fj!jRlBX+*GB~I zodNDW8+2$>?8mpX-)m=aw~2^}{#r!A240clPb2V@zx(oHZg9`s7jP@oH2|K#!0@vs z*WoYl1tauVfv}D2!T+1-xXDM7-)o6Tz7qMMAVC6cZx4d=!TI);AO}+5z=q;~V3Rw5 z33(|^>u@8CkA+R>{%MzWPFFqrpm`a{h7#J)Azjom^Y4|P0~(c>nCOs4-j77}>u#Oe zbMQ9ra2e8m<}xjgUQMn8nvn$HengGg4o}KEzpm_FYQFYPaeEyn3u0+j2;T!!mG8++ z{epU6{ZFF#<9M^(R9&zn6+PpxCga!g;v(;79`~9cF&K_zWzA$qlU9!UiWv}_;ROR4 zFa2Rloum7ewOxm9l+caFIX(vXX#?;-d9Ej}9^UxPo^LO4CZKuH2SvoAecMD$NWJ!+ zO3=C&ndAdwVuLJncH-T2T|G?nqFp$U%(;w7}a; z3~4|}JA=1RckE=M43Z6ElnYQeX|*U0kQOxGMM8_)=wLhv1VPqeT&KoN`eHb!+{m7Z zVYr;qXdcmQgsdn~Rkjy3Q|`Bv&%#)KU-K|R%c0Ee!HCQwRjckQ=3rrc+Mq#vG}>4C4pbbrN3<`U%y_Hty}NGdn_-(zTTEdzB3J zQLN92v@|0nM8qJr{>FqReI9Bn>T2N3$fymPy+C@iA+ zfeo1GGxDf-JCNrYOZl&+slkA{;M~Ym&is|;RP!|_-5hpKZ<<%A@|_nouWr@x9q~8_ zv)-Vg9y@PzAw|ctLPVn6mVvwHOBZIQ4qO#%V$`+s#C||S0a`%w-XdIGczExGYlzgW=2xRG`I}! zEL2y6fQ}X#%{W{t>Ee_c6+vC?QO^68#w)ffN#$ZH;r!?w71Nm8xDi(A?}d{Mm2&4} zS2T{hHs8KYPLW40&6SlMqSB^al$9~P)|J|odR$FyRQ9K-sWVe3dxmRD_C(E(x8_RMOO{-#5G3l3$(VFuI}pSVb--iT!0N(Z z5wS#SB%eQnvo4-7vC+`FMZqdfeXfp{E=CcJ2KktrPZHNKqI4x4Y8txFo-eXC8BLG= zcpKkzbhm1MDAe{N%3cADmY_T5T&lAt!N6Ed&%>G$Z2grnL=lw09v2kO&d#f}bN{-p zA%so8A>(3UXov^t|6PzZwdfZ@QPI#GfWM#yj2Zm@yYRl8Tw?%}hYP;pH0ra}4(Mlt zU8^&Qn~jR3P30%%HsNrNPqdn{s;sNqPlzxuT!N<0VGlh|m9)k=|ESNE`N9~{shZ=g_s3R20mjnqiBh+~5#h4$3W3b! zb@;I#J>V;(s;)iI>CuX}yWv!1)y|zQBW#dTA0=e?zzg%E`z#O1b*FN-7q4EJvl#2C z$bqEmn4m!Ms>}JVpFJ-zn7*OGg|Z=SUA046w5cKj)diL13-;#S4`M*%nI$b>;Hj-+ zZBZP|*Tee3dO>4>o-Sr}r{d}0T#*%7h|;rDr$n=_W@a2F_>trBctmOBQiA(o!hN-; z_z+=jZEY_&s~R7W;z#Pw!L3RIol5X`>*(kJ#Dt`-XJB9#Ec~F9H8uvkO%3r*!lBP4 zXk$bCiEk8dmz{scBI7q38lK+HM52}2Ioz+Mt?KvuW%wKZqC$s-QQHPSn>FX|`)d3R z%)}hV?rwzr5i|bBu$c=d{D(qktc!`UU+rQ+n0czS{`>N4ShdlPB~D>C9*sx=_?9|B z$?_fcs!ICH-#lm1a*pp_`=+c=T0zYa_m*_xm}>gH)Xz-SKlR)>e4f9Q{k=F@y&zs- zxufo>qWk!QAxYj#)tkaX@Jug%R}eU7_{ceD#`O`dlQXb(ME1iQhak=~I0xzHk6Jav z`nB(?dCw~1=;&gCtt~+(Sy&i*7a|~<;nKnY6Q%0@SmB|g6*~`m_*(n-21jejSr1Ez z#_a=-W4(NM&)US~Cea}RNPv2-#0=jD!7diRmpSrV0OP^}BRf)s#Q=l$00~)ILpaoF zX=ziAu8xk5Mn+>}V}1_t01ANG#I>s$FPYr;ob>Lp1wVf|_%2%#PI>QO^^@exqOwyI zqpT+aE~0WDWH=zow2+>#PjS*iTt+W!R*lc_@>njC)djO6E_TB)FsDM#;Kh( ze(vJxDvH5uE;TY8OsROnA7850im0jm@m1a(y9C>EEc2fC-&KUpL={pA0mT6PT$pI6 zLH+VwY%C1%fp&3~>zc)+s+Pm;nXIaL`4Vy-{wr4xkb?xSc@F2W()^E?AG);g1!u26 zQaZi%Qdcz2W7)_7n16dq7g4{u)lP`_^-WJtOr+v5i|FRO#x&Eg(0h@IOpFXsRC;|u zS)NH5FQ2_x9$7S-TS_HQ%19Dq)HMjc4$`r*312M_MNgD!o9d`KF;QZBI*#3fQ1))cm%7BIxXQh@qR8pyvqe?_ zOna_&$bqC{d3kv#{)+(OWrs8#kTraCo#VovMSRJGV)k$RmXxu@+?PDlVzkR)$fWI z&$rj(myGyNqNeimYZ5zJH7iQkRkc-DF?6j){I+d;!7k$2Gos=b{C=#pXk9#_nvpSW zSAO={Aup@`MKni>ezd>-VIQj34iTA`S*0OBnv&d8m~t}D$Y5nPx|AYV{jhg7_BK8` zm4(&F`*|pNnKk>V71x2_D=rFmsTyeA-#Vf=z3oDECEN&_)dGx)PKl?OYioBe4A8e21$)!$UhPy1zJf{1 z$VfF`M9Vz~%6!L*sYk6L}QL@b%xG_Ue`p72VzE>+Wq~0wM-JmAxofa4r1QMyfH4oV+M`KU;)_@=& zC=s-P2$zvh=Yt@ ztYyEDA~8kP`;5yPY7n})nv1xI$#woLiLV3W3mIUa$KLpAi}_^Qf;Y-wmekat;^5$b zoJ=I49eC*@u?J|@!(PT>34?BvE3UVBo<*uBJ?MX+CjEm7&4b41s-o^c5{mA{zz2EQ@2eH&bOpY|}4Nbm$nE<;% zxo8e$z|7meutGR-1bH^*+HeOYu`dQgT4v(@Kp|bDpPm$jBJ#f_bNxP_x(=1OwFL?I z8R|}t89kZHHP-~C7r1I^4PV}~d_-8fspuo)H@JBQX7A31+*HE(@j9Rz1-XqTe+t5? zpji}gRMLl08fV)?U?+x>`|B%kT+Oy`8)c0&eh``RG4M8yS**B!Zq1eAE|I<%>(fXl z^K3l+JO>*g14)a(3>fk40kGjsRMZiO|2C+UH-9fxkC%Srspj!xNVIYBld%S?F*$J(tR+`~oHww;=sE?VMoV>hYGOVcg z85UYvAU*m!c47V!BWcLHNL^K`(%$|l`_d5(nfp}7;`O7uE*+FO*hia?#L!Jc^rm=q z<+xr^RTZ2=)Z5h3&v`}VQS3y=-L0eE9FG49FpR-caWoQT)w`I9G40E>n`jq+{KY8pQbcj7RK0>|I5{?Y+1LpL`u z>YzBVUPGfN%NWBNHM)iQ{qO3k#doa9u-e($zJwmy#s+t@4?&)TdnbWPwgV$4^Noj= zWMX{$f{L;dZY=i15sx+zh#HD{sJOQ{v?nkL~0K*sv2Q z@{XCcG94Zl<%@>mbm#Q6L#jl7xTO?DUpd|@5*n_M0=^{BnA=}jUHzJs=lhkBwZR}4 z#sqMJA_P#NEhqqr2)4={rdmtE1gD~60LJ%?CbVs zle(;NJtU`Kc5ny<8(_N0U2-myFfj5Y0Ft17p(KuLU6FRQw@ABrPNKXORS7>oNC zRuni6eX&DxT!_6P(?H95Ik1-Yh77YG`EpL`-;l~8!Vz2(^x44{elXor{^~p|R(-o+ zCI^zgZ@1cM&*SeIhU227x4Lt#ZdG8vO)XAt=I{8P8w4wtX=@uKpQn;N8BmAZnEB-i zn+feq(UEI-4V%aasvFAE&pRg@e!G4ewYcGFW2&Tf3{vVd(p+3QSvFs_qY*_TSN3Uq^} zxg7T`x`541JZA1HuJ@-BM_`g6g24DyqIcjj$vD}-S8B%*9A}B#`ms0eSt(RSicD`|@fr9a^8*KNZVu&PR~>gOkuXxYio@{2Nmt*ywpa zem|*t6e%>)KK{LPz6n2!o~T{EZ0M4iQ_d_&L}Q0GwRf$`tN2u1jGI~eBFpc;#a5;E z;9lqOU=1t_+r3LWFX})OICJf4Fl6jdqnYv#GIZ0?Lz%&2Z}0k@c4o$!Z1d?NC1rq| zY*ejq8B#~szS>-$|GMg~W~}Ahc(s8RLXnOZV#M-cYdQi1kCCma>#M2&zayB&jJ=;c z8!5$->IZVH&l`JZ$CqwaUq+y3W61wr;Q4h7cYC7!nuU{jeu|9JcIk~3Y zhh7e(yx{YcAIwN{l-6*OlHXrHS{?g^jCXV>`BhI>n~EMi(X&(JJj{N(IS2a#cCoN! zww_}D`{n(1B_C=6Qj5rMnvr%szhe z%|9?R*EK&3KX4rmhv#|jz4yKLT5I3~%@$E$9%j%*koZu<8t?LOUqUrGwf|M%rbr}+QAe7Mf{&;NY=hPqsI)xz8SD_E4o`gzRmJ+(VBOm<`r#c%ym z{1tmg!}QUgpVPTrxpC>=YCLONYVa%Qd+$Ii5WF4HiTZjx z`b@uGM4+Z)qUEeB=kg?(x1#^jyOrF0pV|rqA^F8uMtuR7w7LcJ75;`bElk$*JFzu= z!&-k;(k%($bt?B@fzH~U&fA)u3k$v~$%;4ig?Lj{W;Ej>jq@KbbJ}xA-{dqmy_wmd zpcHWhYtvVahdH;->-A9FlcoW)>E*kl{zcj{u5#xoCn+?iHM$}br*2~YeO0fU?D7f6 z7G}!-)FIy~6Bo^_#S%SZl_TBVufFVb2@BuIbHRImHFVEXWa6+I*Ua{yt8>A_Yj8w{ znlGl)e&Nhx;7;U^*hu5-pB-+}48=nvrNgrNZ{>OVvs*koiwr*bQM2-@XfJFz-FoCl zPnT+;G&HnrF!xJ*I_+Lf&AR0DXSHWNQNemVD|wL!$=cG3*0))ijHsvdJWnx+`l!p1 zE?$&xK^zA12bbnXm z-?`xR{Q>!kJw;Si3nB4@%hFAj8Aqhh8cNlqc%eTPhDv^zITv0> zMN;2MpD5jP#~)eZ&JZ&9#+`}tp8j%AHA_%Igut)*@7BqPkR4#_)wFeOysw&EKeS_` z983_#80lQ2%h-{lC%jma{Kd=To2nDgtgG`1u?T`QY zcB+)fxd~N?dL-1zqMd!o8iyhq#>mi#)aZ;lh}ed3!^GjXnl zG0eF&?4&rvjy!QjsSkrkWmi8^p=SOVNyR7JhQBQHnWk>AN0ZFA_I*hkr`se01p6##z(V zi!*rlRHr*fQU2~`bfpicJOhme=Y7?DvTdh?uMN)_0^(G>#TW#F{qX{6#Q;x!uMroC ztF8)t|MN`vGps6tx}d#8O?SxUI-YyQYI;X)%W;&tK!{VHdq-I$OP*#$1v=C%-&LyH zk;_|NpKFO(zdlh?=t*Y3scaRAVUVqY4Ila8jYrtOQ>mXN)w%T;Ypso+#y=#m@zEq!HTOY zp>$DxJ)^bPE+&j0Frj-D*Upt-$0051^<6Xq7s_sZ?-1_C<;^=cYP+)>xOmnWEVJol zwK?f@D1|r~?b5o%k;@=n$S$R=t7vN|caA{dr%|j;4RQ`6k=OF)Thg7)sV4)kd#&9P zyn)pd!mb-7ic&bGq}s+xkeJz-SuwA9{@E?z`D$P^K0D&6@#5b8#p}&Ou_FKGp^^S< zi%Ib6WM_Trl z)tf}VZ$u!B$ZM7@9kIMjX5qB3Zu?@k0*04qIZ~Mog+djWKU#96SSEJmz4!TNyTs?J zkIH>!ws6a1SN|>P4||#H~t^l*3u#Yy)&}E7``G)w`p-CO_k`krNzUl z&6IsnFVQcEzU)9WM$#Oc;Stk-(mgf{eAG&5+c%aicB7egNtP>I%d5Ck8A4fMZA~`yEP|TVIBv)PO8Py6;VTG=OzVGX zyXiHperm+I>8;vRFm)$7rdit;q~{@=6FqCW?|r84PDF3tIxocFp#1c|-P)ted=G7_ z;Man$dW#~jA*{sZ{x(8c(b$X#T(cLw=9*()>-KL1rxkXY$Ey~bjkHf+Pq9MeFllO9 z*84cI?nccs(Hm9SOA{RI)lAR3s@R zIgkexZhBxL5SUn$@kl}NpZJRpU!*ujw7FIX_NIxcBq(3j=<6*m{qsl#QB1mPUBBfU zm@~Y=cPvXy(bhqqs8L(o>dJTT^TU5bb2f?^>k3klDjzk38+JNg4bI*YWDsXs1-3vj z=JcEkkIO9I{Jw`O)v}(@Rs_?6r|o`xZ$Xxx!i8u{UQ2ECTgym}IT8Mu<(F#Cm*swq z93$|e47y(mUgQ?1xo7UTv+L>Yep3@yrEgwdJw;D#_TTd^ua;T#*qHmd5!=jE&Lt{~ z*`yzdIOI5=BBF0s++7c^)Q)QSN$K=p&6OtlHi43pgsqa1rIxvUGTu!(vMc`%2r?M0PzUdR8j8wn5Pb#1peEc+7{kWVPXXd{#hpDDRKn~ z^lLgi+n&j{$r)24VnsI)Zh)m5eYA1Zw#(3;`_n$)r@k;Xm|WpcimJ@;bSdl<{p!}U z=p$swifTw<1TsNy77j)0b~$WY#^{1lTIq7pzUaTt>&`FUYR7gyIBI(*29WqAGVc zh%!m3bZzt-k+@u5ylrR7N-lp4y*ObZE8Py2OXEnz6Sdw12ZTHpl=I#&;-e*O< zz6cFBd*}B~X|t!?n2@`jm@ehEr<0S!4d6Td9oGbEToA?RCISf^Bh!OCCbEW!<!o-zu4M>g!VAZ29b_ z_rhBm881cRv!>XUdDB~d_Et@KqRZOC{DqzBth!3_hS0I>p-BYpJKFYeCvmh}thuxE z*(2aZSn&xD`v!Mc=!j4?MQ6pSXzS)EN%{ru)e^~%q5@uNhr!X`D`JLpV_vsS^`AXP zm+{SBjpgn`+90?jf}#w2S&N4@Og!TxiOYz@sXbqhY=2)5o{w4PqP=vq)Ystyd@cmX z3Ip*sThW4=N%ggV4gd^`^1Wm_8)yF!lv5t0mSgNqh%sbLkqTnZWe@F<#0Dw=RL;a| ztQn|FNQ6RbL>PCl-m)|I^%M%IA^ve~jv9lghrfmn+%@{u7FhgR-W&3lgzh&G%J}?; zPbJ9?1hE6z(B(KSiE<6D8Nc{_dZdc!4^w)M?4D3e3n`$@8KpTnQj{+&rLJ?vq*D(L}6q_L6fMIpu`WphonduKJtL+cR(7 z*%J3-L%XXT)yM7okRLI~grN`JIlDx#CF$a8$5QYc`Wm+9bK;9#_2IQ2U&1^K?F{L`H?gm? z^|fsSm!@$k27d!tC4y~(y?v^~n8lvX5|yT?rJ4jXiQ4rXP-m|WC5)}~i3SH)EIr%YP<{h}pLP+Q1WW|5p)-^-O%Tkj$Jv71X_O*A6 zT)}5qmUxy{Cxh8ku3A=AuHW=c`_|V?otfgHPwMKGX+jmR5pyoXs~#X=zdH`;h+?&jV5!rVDpM zt1myZ=DsL*&+`Xj9c!JBNHGx_6xwpi)EAWtpi3QFz}M(sU-d|K-}?wHmm%@@)_5!B z^yIm3K)g?NO1dk_{JEbNcA2LExdi&`ORaai!lUjFPf~waa#+ihO8&$f7NmUBxIc%aBGRaL=L5Nu0-0Qx zq=c$60}XHLS&Bx**d(2vpxwn1k~hIjeSDLUTZ$omJ3LPVnoAlp%Vttgrd_41Y(2YkXHzj0$Cf$&J-Q|0f5s8OwB%KdGO-yOI!$%ZR=zhJEQ@9I=mzgCFSl#IUv+kRQKr;)(stzH%c@ z>?2&A0510EN&?eU#>ptWJ zlT#m`VMk$M^|%MwK2pK3+oPI?1AFH54HjzcITdk~J6E1d7aJKENA}+n%c|?4`koad zZ@>ReFu$cXSgrwEq7K}ZPu(hC?OM83k8gS7hE*o{1qtNhnvHKII@j=AL4ZfJ{N|@o zUYzUd_l@AGkMHFhNqT$ehfISUoTk1|-TVAyKxLsj2^gVyXXCa(%;2Ucj@?WW48=#5X%%wfg}VU0?*AEv%}X z%U#X>f=GZsqhCkploR{_W;|L%Pi40@v0qSY1iN%m>`q06i0hB~_sR~%N>r;1G;!EO zhQrZ|UG}mL18FvY+jNvULqz59^6Cq3F;nAyL*19Cftm!iYbl8ctptsvA0_Pw%rM;k2fKoBO+lb3kPpZh43Hi3LTtNC{@bk9<;_iJZoQ$S zC@@m~q`wyprlWGO+Q}najqz-7-CD=9rmI5<1TW8MB!yKj^sPJp)H9Um+flUmu^}Rb zMR`qALoZfPk7}7-ypWrWYhmS`H$O=_SGN0_A{QP4AtC!_2O@D0#El1wEYLe|bk*#-2n>e8=mdKA_~&*Ph|PyYWaR85e^5?f7ZNa-=?kPQ%)% zL_!qj@=5dbl+%ne(x88w)%@r={yQ+y2B`H6&bsw+q_rFUZgQA&g^zM0Ej zXuS3n>eo)z0UxWD@)qNWL2N+c^aa~p>-%_8+Vw66#vr7}eVhsUz8!5l%Zrp*eNW&F zROi95NVb19sL7V(eEO*nWqrDvqqu|y>>t-kqQ>7-e`7Drw&F-pR-=Ib&G)TRjO+45 zuj@N1TN-I3$H)p-3-DMIqmSp8a~WRl)i`ei(TV}-rj9hhg#Ib@2U2xJAJR`*CHdz) zBhTp0X;j*#oIu29wzK=O=1W55;4Z=2qBAKM{@G%#vrCs7r|TSf0bFDX$RWPc?BBw`zR55q!A- zqr0CNoDDS|iqAYnF!sjU!*eTv(%*O>D24=!-lRBV74Z7^6(h zYHs+9i(=61c5KVLCk8^~IJh?u9LpSp+<0;y=$q3zRR)nSigC3I-@<2j{1;)>BA zdZPO+#>1z^{vF>O9@gF6uEr<8+@I+c*=Ai z4VO!e=U-)%2nB*4;)@ZA{WSfcxZJ=laWSxjRN&j_<(jX#{LHgJAKbS<%l#nszrEH* zQ-je3fNISO>eqR*TfGWEW6u-kQNAjJvwgt^)w0yx&(FC z$(oL3FU6XxH~Vr~8f>v&U?va8{$Yt1i*ocy;^0N6peYEurd|uW%_tAm+ z{UiNIyMbc&Ym@n{Cp>y}TV&qlaY8c90VfKH#1r-Cxd`!CM|Ca_rD%tMxQ~@*Ct-Rx z?t*)yyVY0qn7*p{&WJ?xR978W02?z2Z<^;%zmKvQ&fi83rj^`v{l)v>d_+>{%fP3C zPtNX^->)YA_UqQ33$45qwhh$~-17c@cfFFu+aM;*U;K1746G6U<_l*k|xoyA& zMHgoPa zSmnjsRz0~)_Q3RWhV-$LaOv7Al=-t}Loq+zP_#sJDNuKbVN)96f4;eMm~*l{f7eFZuIcaoUjNuS_RT z89K5;t+REzlqCu1Zo>DPWQh%IsSiOj-T(s1$v zU^6{U1a`Ikd!3)7Co#;q=q*c5+@LwfF!Rwbm|OX}=@N=1fL&1S?JQD_4ypc;&ST%V zdFaK9yG`tTmtr;r2PTR~y_HlRWTZnm=M(I@kH2&lROYh!4_ODDxb}U(XMm1n%O7$?L}{ zRi1r7Cp>Z{OOIUaN`JwUUuE@rUQ>V|p+#~rKnKKL&s=K-iUl9%o`ITP&C=($ZAX9V zc}baAc}+MICyw)NCPWJ@_M1zrPSJ^*jAmkNpX1zg*GUE2{D2h9M{!!Yo=;NZhiN34 z4r(M#IjS?0XzDu8ikFBE2$XWhVfURzD!ysGUQu&)c`vc{(eqxD7dm|$J!uDjgpt&e z)KMRr3^l^_+i{^6W7s|xmdzBv2Z`hG%9;1j@vXArWDe{4r{>vhmS66*5JN+zpZ{a2 zceC|OO@HI}kw5I>{7>8MK08CH1e361hCVrOul3^gfo&bG_y*|eUNJlI{`vAGrCkf% zk5sM%B9#ISMOT^xDVRT8cjv+T=E{~Bgb&OxSt>xWS^|ePx2`9vgkr;!3fGY!OjjTA zC|o*dY5=?g5{F?+ILN3T zN!P|V8!HJCyyGAGu`Oq^&*~BQ*W@Im4)VZMLp6zKDi1cnaDd(rA+)lCv!Kc3Cz;6( zY!B5WM-4Pbl|DytPt)G=PdE%jH-6*d0TXCFnbuU^^}h{moI@UK@kt>&%I>%!3n2w2 z64A4%eVO_QmD$KQgPIs2#YD14%83V_PD`ac&kDDZbl4}^7hvBfC(8MrPJJoCmJoKh z%j^@MQ+v#|)-XazLYMML!Tr!=V4_$CW*5m3a`j(1iTAU_9&9^Fg-a+!AO~lKWFxM% zC}_V#5wM@&yoMwCc{K~27hH~x=d)^tPp>R*GNPqYn&9bGgrJ;$}orXUT$6x2RHKS`PI zb9qd>5A(*MM+&Fs1u^tAxnVoq@ z-XQtCE~XlTrh#Rgn%e?_O6J?%ttS0Q6IrI!V9ngWrSUNFwzcT?2Y8K?NZ9Z2VcWED zZ+SqRBC5ZaO(>cy72gR1F^$RnU_y0VJmU$ot{NcYMaWOeAO%`|r;_jWP$yW}xCnZ_ zrt^HPrcbdL&dVjnAeJ@ta|yaKauA}i<1>C=E&nriFn6S$o1KZXm_L3P^KyWtBVkoA ziJMkInOHPeB*IT6Sy`G3j~a1jr2iCx&_n&kL3I`w6ha`FZOsF{RLIb5*2TGMdDq%G zy2@p!OFZfJQvqd~)j4zooy)qS;F z2k1z!>}51V@TQg~uPGzUoNIHlq(C=aj^tQbb=@6(Kf-*{a$NDoSJ+<)Ep-6)G)X6dpS-yiy5!&6`AvE+q#<@;yWuxbf|KF(35nZ6+?{S6|eBjgT)}Z`y=iqzlvCA19yr zW;aVk#3Q=g#(y2_1=3N`tqHzUvi5o8t9%Ksf|oDOkhMJarmxUC96Hc%|Ei`hOV6I) zA{pU8nwr80^dDBgfbt zhZk~8_e1|}8y}wP9FIdN1&myqBf_2-#QRYfD2azl{x7|C&mS|+x@S176rf>U5_>bD zUPPlG7dnknq>0qz8W0 z{1Ha?*whD`KoDd+f4I_9q1F+urUYj#qNQS_F2u3%Nu_%I*jYiIn^RjFTIqNG=24|D zPUALX0hcbiH0To@AIw;Y##X@PjZ1l4QvR@HVcWT$D9DXFJcM0>fuF>1zRF&gf3I`< z_s104doVQ!Z9?nU*H^!zp}RIMMbEC$KTOC9o#HIa_R^8ofO!}G$eutbbtExBbVgeE zmd^v$3#{~}2)sChe&e`(4S7AvI#dw+8NHYcL;cn$(#1hy+gtwP-xS&|0WH^_36T+Y zjMy?~pCezJTDp6i0op*&r>DlT>eVN~`Zx{(2llj4^IgdeO-78bg52LxIo#dJS3Pe7 zSwbW>I%yf=&l;C9O7scxnBErd1m@9H5fwiP4I%%X;xrwVGOM;p9?_YXsuAEyr zh1pEnr2f~PDlU>aDr~_kHj2r^91Lk~tNBx@ry4=@Yy)P`hEn6JLIMJPa$wba;EjBK zPFZWz$7}s^XHo|S$HX8dFoTkz<3P3Uvq*{Iy8gYw9-&5uUfNa-eOkPG_rbEK zJ~-n{Mjpk~?nY1+-C19Wi-8rQ$U4;27ui1$4rArVSA^7dI&^jgWe2yWar=> zNzs68n;2HeA|7T_#Uc;&*_mZHuUPF=Uiy!A zc%|$M8`i$GfC*Rea)H1{&Pw~$-?s@io$6g)qvdux*vg3Q1jtYQ{qQ(pcHRCJ_Z{#% ztR5T=Il9!I>aTWkI)9W^>4}~lKt8qB1$EBfs+L$qRb|j#TpGAqo`ydlSq)Pu-?{`D zGZFSw6OHJqmxLWsrv+fXUrX8WOknF_((;5mLDrW0`IAw z%F8!LaU3kkclU4NbBX`u4A(J-G}fs$&1i(vucRb83+nCp>WF30`8wT7##MSaGc|tf z@o*(M(q^IodOe2f0RfjFNDi3rQS2HY+|B7$`Q}HUr0j2P>S_QI?x|VQZq`HFEaQQX zHTfKceP6nlC z51h{Yry9z`>Nb8qM)TqYxxn~#CQn9h>;bk>OBc}LpWekQx;4DQ-3Vnr$oo5MV)80L- z@2MhJNBpToEw&p!V`szLuZcsyj$ynPm-1HwEK^!PLio$X^rFR>NirB5K;n_&+=ioC zTA2;K4~W&g#gMEQ-?#(o$9QV#i1)z|0kR5=5ay8xsJnl6ul*f1@NkSweBG-t@>I*5 z{RTtaLW{EwEzIzv<(6d`00xKLvA`I;3~5gq3rnbrScv0pL$p4_s>7Nnf9W_GDGUjy z^YaS35=3(iqPkU%d_AWFo1oG*le)@4o-*z(V2)X|5s+_?2nx-ts|-?mI>7Omh|=Qo zmh@?|ZKn;h)4CK|?(hwLPV2JRTfF3FC_?V1Fy{z-vOqXR`H>l&)`f7P1Tt3#`o zG6PafWW+@u@KwDTWqzgMXG+CO1=)gJdl6arFgeU2XdB7FDETv1Qaiee2aY;mc|69C z@t1^CkeLjfvAadF6{Mvk+el_mp&Ie9;WR4=ZY%Q^QSvTU0_QgA+hqVi%9B&=o3L8BIjA%B)z{f0XCnwSWY@nKAN7Rv?#od8Xaw z@d|+NrK2o;iG=3Aw1(!#_bj?>+P_mF5v*7&tlud7KIG##Y<#RUULZF=*eNk5X}?Wl z|35J?Dtgi+hk;$p*GFAh?7xRL|MSED6Ni8QuMNfi|AqhN9KQXZIJqq)dh{I!8|$|R zp+7P%F79A+T9l7Z5;-M+b%p7qwqlvPEO~Ii7L~93>ul}pV{xe{|-f+ z&F19fbalxJs3O9S29nOHKeYAs(jASvZa3c#eIUr=yrJ!;Am(Q|Uhe4ZtgfPB({n@Q z)02l=fqG|e;AVmM*@jKH_C$maM)ehh_XpuAn2Bzoh3)vrYn(SX*4EbI5S*L?1{{6- zimLmIq8C-)U(qu%BK~va-KKu$6y0#t%$De}(@sDqzcyMlJLSGPS)_j*&s!{+F3F>R z*`fb5nZ9GUS9E%6N}kf_Iu6A|rS0s}5`A6fVxoINYU=ynh2fIaai2d6Q{Z?$cB-jM zO?`&_lybC_t-)h$l>OuW zrzgLAczAgI(m$C4*?lI(#l?GWb-jyZ6ckQ1lQc9mhK7dW)Obo-T3Q+!u_LSN>+AX1 z+5Qr#@|gqcPB?$B78G<_!1{w&@}EC{R#sNvdvbE}#KgqTj$OVQ(}$(y<@VlQoNMoO zbaY@bZgnEDvUWZGStTVUSy}Y>{(A=p9mU!&Ug(!;&TdyuS{KeQ9gE{qyI?#y|AT%z0T^9}TPO>V%n?nAq4tmG6l! zudH>WyC|FNrDbE?5jDJ|vV<&9DPfP2?h-^S*r0f(x(I@#@O(*DhFo;`b( znwnZwRRwExt4mb=@n>sm>ucwHM`tG!14G~HK9{%<#pdQ_#Y^U^SFh&e2#|*)CqGJ% zS65aJPe|w{rb-D3xtlwrsi^n_8IZEKzaQJZ0IAvD-YzO)4{hZX60+d=459EeshZsQ z{{5*`I3p7iCkKaL+aDVUTSteqRJfmsfdMt~?ct#zys#8{2hvAPqobqWzWpno+1b;R zQSvH?As{7(5zno!U25-~TY#*|6a>A*z3k!Sa?V=(hBcq~hd;IB%0{O{9AO}G~ zL2+@UseO`2c;JMd^K&m%)y~e&eYZM^)b_TvS3$=fA~ll~*jJ=wWC8;M_!b?!R##RS znVDs&@h@M#?2k;Tub+BTgc~+#71}yGG&B_XreZvz-9TLYsy;I=HmvgMrMLb4{V6F3 zjcAy8;bC97cK!P0w@)lBE!EVB^n>K7J}BPvW{;Mo6%-IKGdK73@u8)q1>j*O>TGM1 zw6?aEmzS553s%deL5M5G%P&GgQ|R~i_jx`CE5G~x3Wd5jI&x7`QgU+Q(eE-VlMcV< zkM!~Neg6FUt(!MHIyy=FBpj2~m`l-d0PEJqV-Q4&Vq1MvV)8p+! zTkU6>{Ev4R6=Y>gD=O@J$Vf@;?Ch3Q#IOrT#>d8%9Ry(gW@cu9l+Pt31Ox;i@3}cS z^yw89&L$=%J@Nb+8X9|#lKV{Hj&gXnuO-MED=GEaNWXsl+R!kaxf3RhTP{LqG&(0o zO;r^S>)QndY`7kEC?~CQi?LGE0YY`{*JYYCQiv3)=OIGqy#e{m-M;6P+@!%t7iWw6 zZs=z?!jY2Hdv0jRdZx&JHsDyipVx7xUV(0%+r>F%M@&{bUcXCDOi79Q<9%Njh2D2u z9oBIiQgxVG+T3gaShT7?UZ`_Fln&?O;3zigj?=QL5?6}!rSx(E{C^%w@qmo1X1#pe zL13~GNA#?TK!NzSkKV<}2q7V%d}ajuf`fp)ot@WFBV|ZP$oT?q!?uf1ujs{DZee}3 z)A}!N^I?ne^7ZEXdd!TB(zFq8pZqRKLa$9!*+aB98ZOR#e0=KbMS>-u+-tqiC+3B9 z2W2C=w|pC&CmmztGpV4S>NmX(YYr!!le&#k8w7K5pm!bm(y}%fztOp%2E(G%e}xx&3~7ea*?;)N~mtNL6(RdW&mBJ7DQ% z!-ZGPq^`F1+P2F=Pr~VOFDj9iAz-J2sc>zo?zBg6Q{|pvqtBhfhI6;4PoHv;2Di>8 zo$qDFuxLpj8_xF&V_0=gmK9KOeu%I(2+zdmsLPmP40Xsu3v=_;x0kPfz@?(1f+SC$E$~|MjB8of4NXmX^$H&n2TLG+)wT~`@fGEAQnfvMm+9Wry+0h`@NbeyHa9rl*` zo>RC|Gcg6S^Kfw)@O*|3yAH_lIyyQEpC8S}+vg4m@bS5HbB}04;RLY@=-qhawV$ik zogfI6P9G}^nKv>tob)`Lgp!B8NdDjfdOH*)%K+KfI`)`8?r{eEMITOY?z_RJfek-W zsMi3`h#-CNpl-AN6n@*(^nqGx`gH0rARu6gi>-D`>@o4#`C$X)?Q0F_b?ZW{ih|r+ zCemOdW8*^YsvW2iPSRjuVPW%;g1Y%=EnE(eb;RsEbp8X6Vy6B1c~) zt=QPuHkX!uns7BYH#<+*USB+ejZ`+iK0iMXJJ5cyrw(d7NP-Ie08ZCjjP-i)0Qzu| z(n#IB_8uA~GL622^5Up9n2dMDK|ocNM(V^Db>u60q8Hz-3 zb8|aSdpZN0$@TsEb@F-o%*eq(C38SLwGVKt&|{uS%?44qqO{#B#~~OJ~TS%`^U_%jhwWE_G)hwM?|ZvdKtT zkJtI89CxGrdMjV~ZT|B3&Ba;1We3d+)BGsqgoFgqlfF<=GBQCyL9`d@`SVs|(bF-( zjml@{ldzPZ&u|#hZ{E5^;E&`YCB&+HV)4(vfkUe5I*v;}lj#y&W{ww=^orgz=T}T= zs;fKCN2$9BCHhjhEwP=?u;t|Diq9Qw&qAU!i{5w-pWMgLIn;3{K*g_hr@%JY`{k~? z3oR`Yoy8bba^I+01d69q=T@feF|+N$7*&07e#+A62JgeY{Fw?WQ*v^ok-Dz)QSfg! zpXKD_$}KNe)EmMhpg&@`6CinO$b-}2iuy80v3Wt&g2Kg~Lc?ytrpLOup1GA3QP}zU zIbhw<`1HAxy?qJ$0<7SoUBPSTJ>}UGOy5}Sirw8WL`@dwJ*V{CYo|-9g=zziY;%D= zJlx-hJuqS$zdl~U%f;0d%lVvDJXvum>^Vi%Y>1!;dRc)f{o1u_m)<^MCgN;)8NFY( z>DjxwZv}`5XnOjh0(DyP{gsV}$65X9hWl(VZ$ZQP31;g8T444C zgk8UAw5`q0P=lkJc=yLGHVm+0ip$b+eX7nKbpXJ+cyX3=pG9+yuO~u50fB)P7Grjsb%#^1Pe-)vgS(7?KB5kcQPDsQ`ueu@&O1?KfLEEKXwz8#qM{-I zA3E5t0*muR~Jx zbO9@(4Oz6x*EVW4d)nJgt*tLYFSbR?OG}wGist~pU)FmZt2dme>URNjdO)|uAX?GO zHOliplte6=d(CWKedX(^&qL2MFZPmvwF7p{%{T#ES))$Jp>ty*bJW7C>+;9D*K@<( z?wb4IhOpDxXsFj->XV1K{>VsW4wf)Uj}7~z&!VXFxw$#@`kg4yC!X7ZdR(xOI9fVe zayndWk4^XKz~(ooeRb6S(QK&oSaEtv%FKL>-Z{XS$7+7X!omVX>7rThtT~?FerEfK zw|+Y~U#kKhIBBxPSi#->^swOqeRg(MUS8gC*4c2j;oP95sJOM18X6K5gt>laN5@Uy zMhq50TP(Ah6sS_6#`niGazHV_5>zF$zsuL}3T=J6%wY+w3_zu~uyQ6q^f*FPDqR_) z_As}Dh{|T{9~@Xs)mG)@tx;ZVQ|fu{4?ziDjH6Di=bz2a&W4Jdn9$!l*%iImZE0x% zLVpS+>AF_bdftdS!eLU&bAdI1IQZ(Y+z$_2P*6Z-Rhe8_`O?VWMd%#rh?)3yN9nkA zLtR0EJQ6Me)x&E&WifuBA1ZvXR?@5MzFx)}vx+GdIk|31bRVUwP-0I{4<<2}uIsz{#BK*bn6t28)L9&zg9zO|Xw@G*>}Y0C~pi)6@f)V2zP6uY1!RV8SH;Y{#HI z{KtLC zVW4omBByJZcyV)a5$jKR>~>#;^=nruG8k$MpX{%Sr`uOH%K2arWN6d-nwG zmDEc&05HGUo5Y5A`{WB?NJYg6vHjNX?<|zRKrF{gGnBb(zv%?ISPXRe)~#DijEqQw z@9(Z|yLcEFAkFLC_E-4r7ySHMXJdJ-b@lX;I9YJ9ue^VX$H2lu80H`#EFw~G+?xpL zM#GNV?Ga>QVe$6%28#Pprmd+73DF0VEyp`KcX+zGy88b67r(z@meZH@@;YAyA_wXm z02v-_W5X)89BLt5CWh$#{b{>SmXKL;As0pY{^@Cybk|MO|DFW^z#(K(108t%{dXW- z1=ZEnsj2!dE=O=Fo|f99nZRX-6Cfn^HIq#!LoTf3LB>a7KY&j4g14d7Yo+sn0BNG{V$#| zN*Y6F1)Vp5TmdELY~c%`8o2cKUu9_{vffe~KIQ?4Y3c9|nQ6WbtGYl!^gvKZ2xEE( zg|L}Mv~10G3z?@#QhdkkHnD#Ha;YJPrg?yGgE1i{Yn%l`N`Q`4A@AJ1yD&Fbsm;pI zIbL2i95S0Wu)I|Y*={cdUiRzPFUWv^fF_i6CJ70NE1<}k7fMRX-!Dx$yRWbB?93xQ zQg&CKjD#d?nnu&SVOms3h?$d%hX>*?VO0@t1gVB}A)uREj7M`0XpWb&3@~>}rz>-; zw}nv&I<4_Jt-a(Tz2hwwGV9m2UNL=+>DbVy5XJhfAvGJ-GDuoFx?py|Ou#t~OOQ7} zr8#m9jExWX_R^FY_}@1N-k-Mb6=thHni)_Kt@AkEVe?#;ffBc43~h~&&lIN?6-9N& zadYGY;PrGBGmn=WLQ6v`XGi)$8E=dh>4S8FJi&|37&hJ(W}Rw>)!}@gXixO@XECT~ zHCYWA2D$u_nMXv#Yw72sST%S?Jw3LVk4OYNJG+v)I$fr8=D;7Dmq<4^H{cQCO~er5 zocQ?oKYw2H`%iCHFf)*H>ujzI;>q4(8!t&c!zcd`7Z5qygWV88FHWJsEb}Q^YVfakd%L+ zp>doKysP2j@Zx+_KhzVws(0vC2dD$}zLPv!Ix(S*SH#Q|CfT<6uL>hK509F*HZvmH zFkP9U)pm~j2z`!3gh{8*admfh@34CSlL!^sY3t^l_5eAOKCldcu8?tzKL7DU4BQ2$ z8jLa+865PJ)YVP293Rm`c|LpgzDu*Qu@Uac8q-;vXTV_^q$J%grOi6h5=>TDyVEh- z8hWwiE9!B!-3l#@*;r9i(`~n#xAXX>x7hT>`5}N83YZMIMz9Yr>SXP!v;oS%2O zAAo1F3x{6hAfN+lrh|-sWoEi}v%M7Jz`-%Id;ISEmyy-FKR#p>F2CPmI|Ipx|fyOY{ z4{LlO>=`vR?obXr-)6U=kF5YQ3fj(mV5g0ec64yKedkV@Dui@4bQg?10=p3UWZo=au6m(}P&aXebh^{VM0O+yVcalqkD!WW<>fO5mVs0# z(o+M1C`-%9$^r->5symLz$6l);B6@_D|2*mD$uS{Mgo61Jvjm48O#nY6}TEvoVoe= zpyu5V)}%5A`b_rrNAzM8+JOGr+1vA4j6zkAhPG0L`N@vgxjXZbv(nRpZzfHR4-k$} zR#jD1Q#+UmWCJJ4Uy_Sd*yi^Wj@ZaRT@(rh!YC{;G4XI3g_`e(vZ|;lEp>SH>PulE z{LgkgAAsbe0YETcU*D4AV$w{S2&v=z<>h4(a`M{cjL*1vXtz*v%AY{`K#1otT;y3 z&D6oc!Oo6@BGlN>u>HAh%_J}_3=?)<8?{|88!6Ch&}F4<`IMRHW_Eh84xkJ9Y&djp zPzRDGOKZ3Q6Apkm3e?&513@QkAjTkdx^A4+&OSJ?2M$d!46vo zpx>Tp2H9@646JJ!oHroOqF_#)vc{O3m@IK79d}_MH`OE`0y7NNdeJ?7CI^N*3^05f zF&rMK46I>q`g|N!1BM3pjF1@2n*cGCaqt}@b}@nqN(T_O8gh;C%+%D>T4uMQk@R{j zaDo?sD7Kw#0dHW-`r^PE?bTqYaeREt(Y?A44zKWT7bmDNaQ5~A5t&N{zJ2?KmodwD34*Wu{`+r`89c^4@rv|NRR)@miJ2iSP|VAFLv2mr|6`U!ORd!(evN$ae&lx zB?wmJI`%>K_1RFcTrP85tSiPB(0Mv$+US;BB9x)xn0qC_hZieSf8B6lKD70(W*3 zqB#B;({N_U{~ojkn5*;PAy`;jLtg|13tR{zmpEFmv9u$D*jqy>HT7wqS_aI{;7U-F8qsBt698b)Vt9aw zK&ji>+q1K?@h~0XSZQoR#sY?r(M-QyY1I@baVtB zr&`|2KfA|BYKqX!>4pY?mEvM$R@0VGAm%9qon+00QRio{O$|7Xzh9^PAMCw(G}Z6= z|Gz5=sZ5DdhGb4Mgc2olh76G*V`QE)CCU^sWFAxIWXwDZl_`Xfp%9X!M2S+q&)qri zb3WhSU%&NRzdt``z1KPww!QDyeP6@#x~|9lYG{al?_Q!EebeN-iGxN#K|%b{s>;gU zl$2}UjZone5)yc`Wv~)&>}8P1e19G$VgI3%Gm4IVq#*JV{X^3RRqII-awQAogA+~JZfXe7OsD3 z`1$ka+qZ8~W~AG@7nzzzgJBXqMWCLZUilF0hUER?{Ct~{Qu8Q9-n>b_ zUh#iT+0>W}g zW%Ar25)$5POH)W~@Du}g?%VEvwkDX-3?)efmh}ie@saQq**o-}5{Hu9Ah-+-X(x0I zzJ6^P#(3zEy{)Y)Q!a{>b#?kSZ(hEUE9F9D-9=4cVEcsn!q~Q!FGKO}N~I@8)l0R@?oX5uNz&*fU!B1~J0eDinAe zKmR?F3=np4dMpbMN43Mx)WZ-Hb$*n}P%*(TYig3BB6~GBh#D1F_6&__m^hRjI6QcZ z0|yT5*s%jH6gs@cSYu zpdMKQ2AVD{pDcgnG* zjpbwBQ#%FEGnh60dh-P$_+~Tn#;x8ts8)Zi6^u=r??xK}MaM^%;ipGRXDi3-e<8-= znVZFfnfN(W^|^XFg1Av^juLK$m5>q~(?=@rB_!ll&=dBBqXc`*=j)wFsXuE_<7~&= zSg6)s1Donw#;Sk}Qqt=<&*IKSN&8uF~@8GAAZ^new5n zgmxD5Flu5?MVY3c`RI;!zv>R#H9V%x43QZXi`Yok$cS4Tugz&ME9tK)>C{R3(yxc& zdPaKKapI_xab;3i_Jl*EtwYj>gQ_w#5vfTUG~e{To4?(4r);10xeIQQ^ZCD<+&z7)iq3Oy zAsAdDeq{U)qFTSF#qew1>utI3B9vXm9tjUuJnWQedZ9^Ga>Kr`BCDS!D2!+%KM8spmV-i`NqSyL{*U%=+_OTaH_qF{vx@+Hoh?)yTxM&?vq6-<%j(gxrvcAwR=;Y0VmZ2_v*YY+5{6bk zXj!|<&&)PVH)N8xMH#Kse!E)KK2ahzRvAkm@KX^V#}mE;1=)yQH(s8uclTIc)AD9d zim)+XA8%$dva(Wrvk@&)^G74Qe6p%FI4L+_bjQT$<6f40UTn#U3a7aB>&ogq*LCAA zuHUhyIJQ!=jZJB3Y%1|p$m7Fp+b8w}p5n|%_i$E{8Rz${ta>PL>9S^Z2Ae~Awq3J> zip1Xe{i6fK-&%T=M>1Nut)kTXvvEXmxp0-e&(~xF-y{vCrLS2BS0?YI-;?JE-^llS z&@dnBC-Pla57pRLhekb3KP_FFkr5V;a?_}Ey9!TK%EP;|Z+6OM>L{t zv>DmYzuA9YwKM7BKE68J&-Y}T_cyOAWq0?wQ8tyk8{{0#Tb*#RQ&+D%eR8lWe`P+R z`G-tc>aDTWV_f=81wSo{c|EeER^5B|gem99Je}6?b-dPB8+aBQitO)(8p(4gSiG0n z#E|?+@Ok@)hk@=LUQzzM+CFnnlKTPWF}91>?bL>wWN2xfPbg_cG}(4<^lI(n+lx)p zv2@_}=GWIRKbObEmh~z1a$jN-kD@qbZ zO^?MU6~CNZ{gzgAm3IDNYRV-+Z*LEyc+sZH>YUp4h98&M(}cffF;e7e50mnNiFsFd zDE_EE2|-{imEqJky|Ku{Ax=r;hb^u=;!FzFet%3$X=hJ@SwFMu>82lRcdR&%2t~O? zH<%TY-g;!~8$xqL%qZ&V+QJUz#RE1mjG^q$gIeFrdhV1c;%jbuDLS-@7tH+k3od&I z9?XAX^e~n_^+4P4&E-F@)6A%;zt(;qcHrXfty*JGUQ;c7qZh{o z1(P1}IqJ|?!*2ik4O?)UDT^^lI?oVOWIdD)hDO9soV2bpFf7)wIhs%;!}GKA7PHFJ z?dI>p5~uQ}YyK>66i_s;e`K`t%>DiK%1M5q1UC(T+P3%fMUG=W&7MxmUfA`wcf5^V z5!}nHm`#flU(xTk60IO>D86JYc7jXj>eDdg)tR4ND`h++b2$#e>vyW;GRWmaYz?As zsA#(Nw%>9ey|0ixE$Cv!DZ=o%;ApL_y<$&#=WWYJ!aJ*j?2T<-AGzDPaZ^Y-&Txg4(<@9fm4J*%8NEBm}Y@imLT9$;kL zoh$QnuCJ<~T_q>;i`#}^RA~G9{>X1%=Dq%e*7m-s=KIkea;w}d;#*to_Gyxmdp5AD_T^Ew=k0a!xnWV~pCF^yx%p+Y&Ud2m5+6q{ zS{c2dzg0O*9QsG`GNvbHQoAcEI+DU8!|lduMdFk?j^w&Hy2H>Wado5_8P#fYAKjF4 z$=WO|kD+-nKJ`bGDJI?}C)S?NNGJBRjw+3s>`Cb_j~t9QN?rsE@4W=UzH7N% zF^IG7+>~nbi)*_-M;vJtq&*_OvY<4~lRbM*?#18Np-=68a>?0Pf}71=U!->r`mbmm z#5j)5DRVbG@V=p5B8OL3xkmY!;%C9LL7ybI63%4juopgKRStUsrJXHMRR8jMoSWcC z{SrH^8-caW`8%oIA+(&k51wRCh>wktkgQj;$Pl~!R^@z?u8vpW*m5WFU16BBnNsDM z{JE*!;#ZaCyR1J~oBp{9!dX|Im%Ki0-b3Rcu+`*frk#5>KBw+dG152iyj;{|po%l( zCBKKlf@_vNBJxuVRw&7LAlhLl&fs%ty>s+b$LA1B1;-QHraM9&9%eJFO4E6l6c!%P za?rUawx8GLbG`SUoX!nd=SOK#@mF|;v}R+hE}#1<)7j34I^07xKS>Du z!uklL=0AK0mSJ<=jh)2@Vbf0ELaOi@`n1>%GT!;tRij~E^L<$4hTWCYxk3L;DmB>| zt@MzH`hsOZJ0sgjuTDGHAcqTTxg3FKmKobv@IK;M+yQK{`X6gMogX>cibXS2Ra~{T zec{B^JVLT{OY!i5gR*mIM^c450e8(G&qbb7D*JH>%MA+7jK^C4%ZxhH>q zJMV^~j{KyvvkN*c7jap{A$z8#T;Te);nE8n#A+7>iGA%nhZE2a$Hh4xNfdwm`22cH zUwYwDUuMOy4l9lfR_YOK{PfBb%_A@JiW;Ffv^-`tV-nw?G{1MS>R8dJ$K)FC_1gRA zPbrFDln_r+kVP#zf2=ApGID2+#qU9#-V{*>w*ApAF~p@=%dRgdJ$U=jDM{xuszTJe zLKL{@Mk}x7PmB3Ya8Z$sdkm;N-y6yPd^YuAXg%q|fiFqHyY1~fxuO{o29#yav6Z6c z-+FsDdC#P!X_`V@Fdc~&@~Qkx22D4n;l2vA34Fm5{jU$kcc?<910gW>=Rhi!mwQP04$HT2_{o>$dp$yKBZ?eglIN-0);F2=~B zVoPVVDra?v9e+F;RjcDGR$i&~8|K^ife_q*>5tX$OGE0z%(A@aK^?{qgi+%+@E*bRb@5!t23Y+>g366>;))u8+eqjMQ!In>jP?XmNq_N`~_q zo0*&210`D=sr%lzxOnr9Pjg>A___o~S6}P)%><-g;gLK^z4P**qt0knZID~Sdtrk& zYuR~g?fE;H$=iZvUTmZ>QFnBA<>wdgOI0yBdnKp1`FCW5hUMD5>EBorv!1m64u05|`HN$t~ zLum3?+=qJy)h>-Tq|d+gD|n7rY2iWHcrYvB@yA}jg&_^TEp zkDvgZFcN&Ims(eDV58Q6*n%91{%G2`*TUl`-?Wu74I-Yxot@X|GpKOyVifk@Aaca8MFL zJv6qy^|N%AR;4+w+W2;L)1Yj!3qz8fJKppj<7+y>bYOhw=h7A1OFo$!1xnPq!YYpT z&cDs|=F6RC*pbN`TimQWK)?C*n#zyeVO65Bm#>w4sc;`<7R5VTsd1?eo92#CmpOlKavGDoe=1k((y!%Pn|1Er9$-1Ux*kzQK~_Qi-q6wB zRFU=@{qtxOaYa5xpTb4XVZOB=!~7c`(>~A9U$jjO4yvq>l-SE0HNhp7FD*l_Mw@!8 z&itK!p+B3TK$`L?j$xxBnFESlif}l`KI4t<+x!|7_#>$0-mYw&%2m6Gkw00-AqGs` zgRPL`y!VxcRGj;tUH}EXoHribvw^roFgZj=Yrbj!`1Dmw`;PN3`g z*^wj8Cr~`-=+D-(sR^jIGjeh(B$^jnyLIM<%%j~dQXM!4>yRf606e| zI2YJ#9eMEX0A*mE;rNf6Z9RIIoVstN6@Dp~vJX4lr0%1gJrTp3m|i;Wb$-m5$Lz(Q zv;_A`spG{S7oFS|@BG>m*Bw6*=VTe4(!%dwuFLCdcmMw8 zk+m7OZI9|R`594X-M8;jJ^jkKyRWT}>&bAK%{TU4Q7;*trf9bcYH2eZ-@Ms-(BP8K z_gjB|jn&_`@Sy)o&pZQB0g<8bcYB#@enL~}sBZ16MYpaIR1}5=hf(>l{8yG^v3IPp z?5_Z*#dG9prSNfc3ELCKd@$+bn~9YSvwr6jyw;z&$h62U+RcB}2K^vzgzlv)KV)o| z95*8x`~00x_^27KjH}hyH5qfnYE;fjj&J6qK0iMHd1_DC@l#{>!(g**-_u{#)+v?a zKC%|hcYaYqP=wK?KO(Q)eK>BtEi*lR>A1KG`|-C@POeumFoF@SV0`n;X7`pstunS1x`Bd!AMIQ^rC1@)_=Ht3O_ z$;21qcy;*Ez{PzeAvNPuO}6;=Wp$1DwO?&%5l`D@Y-9UX;)boWNri?ldBu&bcF8kR zx>v5+pFhPdp5pf;6;9eO3D)7G5`RMEyTosOf2yv_>CG~|q8HgwzwVdB+f#J3J1-^@ z(ue!O>pa8-?d!CDRE^kJEXAPdbki$dwumUvQI3O$!_9SS?CyKVHiz^Kyttxb*@`yjL~i(;xb1;Fd!*_zDkD8u9OFH z8Jj;_OX84P?m)!!rTDnGI8?bRRy%ni)E@1MJ|C66c$2fqZ0R&2nPW5Y;rw!vKK{G zz~|__@zpMpx{*^`JNUeBe-Rc|k#S7CX~!H5HX?P42N- z3S~_tL>R*VetH)6Ri~&ZQ5+*FD{GLvKcwfgBX;&xxbk<^r`xXtl}dOn?ElQulg7Em zFkX2~>H_33M+uQ5LR!h1zSpJ`#w(4Mj$io|3hU)i(9IxkA#HPgBvn6|r>L)!CiU2n zM|@R29*?fF(ML0OF3%L&RM)}CIrfb6FIIm4b&%TZidgD$%{5JPLz4%~c-S7+N)~c) zvnPlSynNd8Q$>2u1p}GV8$$`AbUSXu8|cMq7#52%{C&IrXCvD(iP?MNB~(P9Iog_8 z>6rh?2(h%}8$D(^GfpD0zHp#X>tcz_(qqzk(r3*zoX>Z+X=*y#$7;;h>@3p%cCG1@ z{L)vh>^o(1UW;dXE%T}6d&0F>%|+b#@*79``J3DDk{AEH``Z4*!}ZM5_8M{ziXl;- zJRaZ2#zCPjpBkfNz9?wOKy`MZc!MS++2-Uwk6XWL$@GM4)Ur7=2jvud8jNh#yL=0; zR5W|q|FP$yC-0m&Ie}&RU#o9SUwYJCWy-nf)K%k*!;9=Qw$^u&i!ZMYzWb!t%*j64 zeP6#EBEW7Hw~mo&zAt!VMTNiWAv&zFb7hB?+3+sY!%<{}IEkm&8o|{X6(4JmwmH9~ zSb~@Bqqxs|3Mq~ojq{0>P@T(lOZm^BL<(Kiw^oh1s`E=rcq*&k!q>fAV&bBa_Q@(s zbBVo-X`dji>oy|MG|>Oy8OgiQQ6--?b~@fIEST@nvhSZqTNAROVLAPk4s~BBKbO=0 zWw^-X?ZDT6EZ0f*E#kmCJjJ|Sb}u_=y!*qPq-pQ{@-qB*&@P;lb5{7QgSyJpa!%;3 zkw2zKl$I3F=S(lAyYIR8`Z&X9D8Gp2wM|NDi)KQDN_j8G>nwE$#XOFRZ`3)p!#x~1 zoG^cve$;UJ!{u7Izd{IJjt`HyZ3=O+ks~s)zwxVc{6PGyhb_5^>!(wHG`?8cV5jDi zdqGCl5x!`cvdDWV#re;CczV?ym6LKlg_TcNI7JiaEzqu7O@*imHH6gT98nQrs^0@S zPI6@UcerZtj(zDk+Wv^Ir|5f4+0jLsjT71TwD=egrHY-97(BiAfJ#bM;pvgajEu?g zjWdC5JsL_oeNv+5*RI%#3HKe}KYxdVL+0rM1tcsyuCg1l{9U|jc7o3pvobO@Z=^f6 z$+!w6MOd3(^>l{Bb*Iec#%Cr-_mSPf^%Iic+lO9Wc|lEmK0h$7aZLL?f5A7#n9w7w z{rx8y!==}MJT%_g-1l-DzBFOk!mwVE%+@=6f?j8DE$TeC zxXi+cg^0vmVNng2quLA)P=s@uCr@M^=xkV^C$R}VO}YgFekyystMqgpst}@M9Ch2L zJIbT1R4z73Rp&gE=skksjr>2gkiO$oo3lMpzu)v}jkXJ)&-c4|`L12U`)cP>KK*=| zPR2ClACVkEoSM^7<;Rzs*2lfx_)RW$dwS}|qe#H@Pt8V2c&dKn#Cm7rSK7>uShE=> z4+Cq%kRS1TYr3pAV5TPhG@mmN2e$=w24>E`xffNnJ1}y!ErvVBISd)u>#& zdv`VG@Z2BM#)B05=Yw_!wd6(I^5}Jx5Kg0LOD#7WkMI1dpY2&B9{9QD+1r~sI|-9) zng6N-fkW`3pI8vWAHoLy_YeQO2>-hi{`VC8?PSuMm z9CrQJw+5)*WRca9VL5bG`*d-wO>@PkTAtOtecuc0uHD&1(&ZOwYNO5h$R^;?;BKd!L`P)U=q2E5!Wzm53+fB!;N`_A&rfBqt^ z!?f$afB6thqQ&t{-5R*F*_D}i=&YuCl9{8%R(a-X&}wXFf$w(k(!t@%RoU@D-cSx^*_Jw zr|Q{Tu|vCU`4<-UlRc3-Y%-t6SQ{9Vkx@=_=EK(i>xEnVwvKqz|HyadWu}?RFn`YV zCB-g6w0*Lal|Z)vrVGPsG^83CF|(5Npt-~ilci&}mB=}pJ<$T1lAKH-6*0W<8}*V& z15AP_s;S*Re~a{=w@r4Lfwd&Nz+ok%@vg$;uZIh(^=0|LA0MCz-%oCEQ-Ot@O8Vx; zHUcXP&C+&~DkInRzze}wQf4W*cg?Yqbf%nUIyZZSd(vnaO}}dQC3j5(nd=fT;fYyb z$Fw}n+?Ggs%I)ZSnlymI1zP0<_gA03Qw$Al&zxMDCBV5|yxxjLa zW^L2z<9DBus+EqGD-?~F&pQ}j4HTlH^WVDV=9vq0G6L4Rak1*1mW6&(=VVv|H_wt$ ztvN8Ai__Zm{%IFuvY!CO&5X&q3cYQt)Eb#tOQ)%~sx_Vn)Cl3>vB_+rC@x3HTa4_DaUb*?X9sxr!3xo*ryV@ zl_34V;jWa{+-r@ubGyg{UgT*He^&ZckxA*8cJ~aWwVS$6KtQ%we8$a_jzfcADE6wp zQa{s7B`L$sM@slz^zzsB0{bR{3CWWKR7RI3$j^P_S?yczTe`P(j-=need9A~1g_#S zCZzXul`h>t^FDDF`9#Vhx*vCLe96P0?9rp$U0nyHd?fzau|E^!2&>vZe(YK%I8Kvj zY8TK1MJXnpyB2Xs{tOlC328w#!^>iC6Ym$@xT>Rnt}5Y)FRg4Tc8ZrNW^Xfyw8TKcSUq#!5dF|afH($OY+qQjjB9es+y@Z#W zd>Xhy2XfVli;5~oY?oY~wCts$2pk<7qotvl{6$NW&Pn+vAvoibp59Ni0lv095i$Kd zl6lWRr{+)gx@UTM&lZznU%M#94`ih76NB%?{9|*tf`YVDiU;5OmlSf^WyZW}Ns zOgzMQ)cWzI8v_itg zWo!GabJ|=LCP#dJd!3~s{9~}1b}Sf|Jp1Tha@MGQ@%G5!Z|WyIDq||wr^6h9^I$4+ z_t@H!=|by}#PoakU}56}vU8pK+c~qW8It`>E+sGTcvjrGosuWQe3IGgVDp*aSP@Uc zO@iz9m7SdPyR7MhJhr|2+CG4{J=;b~^O>?6`$m7dR2XEE(E8ESqR zp}9NKh>kp@q_N`xXOU#j}+>nDC+YfoSF=fD3%@Kr@-d6JW$m`>#3YFxSJ9!TH{ z_e&DeJ5V_7mgcn_D$HT>S34?vg z9RAF==hiWTegUkiLyd<7lq1S)Avot-|U=Ht_-#S{3YbF-$3nvpl*1jKs;yup7OARu^{K*?#MRLo6Ix=$%$X`D6n~{QcXKiwKe?YU?lZM= zZZ(nYbFD-nOG_HhoM`SnQI$}#py2Fd7xWg=(lXzQn#<~&+asejKN@9tx0RpakJ-G-vDXWgf0=dt6yK5n1fgY zVBE|gH8vaHofZQL#roAlw352HyAylYg)ClptWDjvO0FDR1d@nZ9-X~b{p{72Xa>g6 zE{4e;Vb(%LMI=d?Ky~22FSNWL2!9S*3PTXpGCI*g5>Vxd6QtZmAa-41%;Ue$bAgHM zi9kq{U_&VH$)Savp^hfEKQfic?|;s2-BVs?65RdlwhZ;npp|Oxcb^ATBhm>^PBKsg zJhe05O<*DXw%-y&ErX}L&dAdc8hD46uKn?LceyZI=O79~#x;YBDZK}%wme8b^>Ui* zt+w%9MN0z1{YT?I{ZmV1OMB>E9Lfucm?Rj>6)~<1LE~2? zgbQNF-wmo<7CG2hFB53k5ife3He5q`(!>9hsA17X0mnRYzY^4IF~&ve-;6fjG5b0d zj+nErfnC@mRE(%&Dpe>s=f2O+`GSH1 z;%Fs?4XL#C^lEXoh)fPV-tWJD1Iy5I_5O|cd-rw`FapIu+4!yhJWa?9NQW4Kd4d7> zn3x!o;Af`mGcjra1s#r*Fco0HPzu^j?juO}jUH8bSJ!Xz1G#mz#1T3`tC-11FqgkS zNqPG@lCxyn{i&V@H48vLUKlQxa(S<;q0x_i)YSX;d!3j9vU74;JTc0JCU=qj-Mq#1 z85()$P>zX?{;xeH$vsBWDr1%H9qf9_<1EXfn{VA|!bHxS&p%d7Qw=FvJv`3RP3c?h zebM6GAlFQI()jUg9WU;MAq&lrk=9;(+#+y`%ET&kPt=V;7~mGqjPg&_bVn$scLnc` zynB%IHY?pmRnZnn_UK-vMJjq4G6D(dRs!A4*i07XBUfi=MyIHa6A#H>;LbiAOBsOS zTElL)?<+AvTGN_)>v(rujqIoN3Opq5_?7OoY;(3O*$75Df_5E%_W6BCr-GbyIDY4QL&>lj+gaQ zyuQ6|xg|Aa8MYmf+VSB7n$A_zB$7-R)>N6=6tnx$aGsHop<8AV&M36~pIGpBJ{9>b z6D|spr~r~aW;*7}`a9;71UqRdOSe^QW81Rzi6ET;Nklpqh2-0-qz?#BW@)9_=0EL` zW{|xVn`zSiKxguj64jJUCg%~oM|WQeDEFQz$-mE>kP)y#wMOquelXqG*X0IXYJRpT zp*5I|nmnq6jRmO=?+VOA3PX^xj`KsVIf2N zdDUC5d^jo-L$CR4jI?7K#}R9=bWV{y`hY`yRL(p)zFTYFO-~bN@X%Sd)<---J9c=c zL7XN!A@rtic>qpTQxh`*$go&$O*#tF)bn{-8g#SHHO34n-Ew5WLs301Es)D(WMH5o zNq_Lb7&9|)mm(?M@NZ2Uv&S$KNlA-y`sUj3*-O^eJgEzak%-n9y9EduDGan8)hoB` z&r+n5Z6T_)l(G9x94$eDcp+ z?Z9&x)sB}3A07RKTy*XF)|NMAVU#M(*@r{lVIE0pbHhct9mZqdF+;wXj>+Xov7(ZayC#X4>fRs3 z&dE7}K?)oVM{XPq?l`50X-reFD$~i5Wm=u&;COEOn2w(Q{p@TrRlNC>0Y*{-?gAyo z@cfFPI^E#d*iI9lripo1&<+GCX+c0SX$gpqj@~1+ae+U9NLau!3+S3SZlP>dP81+s zZ-#j-6dyb>JPI<5R8DqwbKvaz_e7J3`8dpY+}^|dw#nDm#Dw*~F6K`7-4+4*{NDMU zDyqYW9Gnq9xTw>~YSIyAa&7i%ym!st8Fbv5olm9NQ&rgOQxO&Ayi?HDvrb0eSt!*N zl4{Hab&>psozgfnEe5|RSPFV61?{bggI>r@(`Ku#G$eON_M=}yGAeOK~z zlSh5s1fH>XhsJCnkO~}Ex%P1AV7B@6;UkXo!5P(;!}0wU4hb!D%~Mu9&CQ zIlDYMss|_U@K%Dr5`YaZC?YaA?;0N)`{Daf3=A_^VE*2#!3Xomn3Fttuc*5E_1ua| zlAtV4oCY0glSFsr?&f9)1|Bsv_0sQ-*=0XJKg`p_aH@4)5hO#(?0E8?cK%)hm~hWb zLxO`Z@Wi29JG}56liG+Q#l6=`4EVui`j>LBNz;wi$z2ui)Pj4 zCxUlM7R9-p3;*c_SpS}RSpTQ@)l;VhltUF+O}NDpS`Q;#4tTQ3<*+Q)&=RXGBHO&_ zxK3IVAUQU*V{3?^>6Hs6ga7ST<~n4$dhe1 z1F|VNKVSnq8olACkWoH9cvyr_WeY*J`Gd@}BsT{Z1!D4*ozIX=L(VRzBuo*s^{(@` zmW|+2IW_bA1gdrsUJi4vS(^PVbQ*d`b6144_|7$FpHq)D;J>Qt))~uvhyG}E*R13E zW4<~}^r+KeUdbLVAIG8E71m6dW5ADeCkE*6h`#kWm)RF~KvXqPOZqj!GSFqpp*HL@ z^td%GmNu8GdXI-}YXJN;z(_6C%|`MQ=Rd;tsU zzAtq@$BLlvm*a*Zt)}nij+q*(2@!kA`VeMmv^&ZPJ9q4OA zAg`T2sG2Ku?3e@0-aq2P2P5fN)#xj+qTjt(m8m*bDfH#SmV5F|8Iw;Md|BEd%Mg^F zC-0yTTl#J8_Vw)ztPB>?j}U1ySiI!@baJu4_Iry!{TZ??cSH!SiMyi3Gb?u3T(Ko29O_o73A6T4=&(%FeRU7+aAA z$S@zgN9$jHiO=jQe%9`~OX3o^MB-?08Zg;O>4bzdL2dI+zO$*|Lq6E4tQgON&6=BOIG zmzbDH%wozl@-R;b48iRZxMz5LWK!T&#B{_)MKvSR62GTf_a+U-G%1NZp$DM}Qg-9S zfPer@fn%CCBR$>3(eXm@FvjHbwRrwf*}fe++jCr~^l-9QgFsdr^(EbLAEfNpuO@Nk zE<}ikAH5-Y?AYr!X9*9uf)82j^s@O5LYd(SHbc_6M~lm%-?zsK zZVys#sbW|nTiE@5+moC6mY;VL2(1_VC8^H@xR8>T7L_ym1jw#aGo5=(DZ6Fx742)? zsemtsSv5+zjEsh6lJ4e2JAM0k_&4jVti-IQ#7B_9a^^uktA59B;+Xf?G3ha1%E9d> znA{TxFiDIR5Q~&fhh5)F+3Ga@P(9N)@wI?hFZww#3TTgM=pd8Henm3>6`7zd{}ve2 zeZ}cWb|wB8oN zwlpe&BjvRLl9+((DFfPpSp2s%fY7qaXm4I@pIP)?{I_)aE34p9eY>Iagvqa@eM>GF z{=+yr#Xe39v5l5nEuDM3M4LGbhW(GO$Ds`z!;#^qM}7O-N{crl_pU1c_?n z0v#*KKhYtps|g$HDc(;DyWM~Jvl*1v%X}}snsRuM=8RPA@B(Nri;Ig#0-iim&mW}a zP!>q(UW$>Ymi{OFr;?sfr0U3{AKoW_oll#2L&%x@#$tQBr&;*PBRk116J*J@{A1?H zE|V;1>=8HQ2uX-bhhbsVx~?Ek9)b-)iKU|JBIJE<62y`z-%Y zL0-xi8@8|zSRVp`HLI*_z`m-ri8p_6bYS2d*%pGd0x)cC)5OQLxt)wP{Q}wFh4JA? z1p1)WTyvyRh>K)WkYTUyy@0q@cR)K3F9W}t!Bx$MVedw`5BPKicADxEpa4LDieNbI zXTrc>S~da*gpiQXR0}XiNE)Z#y~E5SPB*B31dIqbAZ|lUcvvp%0T+>3LF7J2OH13@ z+G3s@L%&K&6te1|oFVRZa&m%Y?m0r%f>;}`hLdPQWN82jfvNxV*&1T|dRKrGfLX1Hv&#)K^CK;nY`=rOxgKmpE;o+n= zVZb2--#dN160QK61~LLV3bKXyd2W9G6QJSNFa@Pb-tfZ6F}yE)Mh4f%Y0Pf|&!x-} zGh!RWibgE^D*fVNW^w0$X|XsZ^Rf{lEA7)K+i6bCLRn8%GNW9y>rOg-hwJ6oetz@ z2G`K5SD!F!o{`}XgY;o+$Sr_J;!S&#|g0iY&G(GWMPDJXzT;OOc7eNe}( z4nQg}NX3{Uz$yznbUJy?6P`j4gAFiMKo?8iSL078SE2K~rD$H3S4_wSOr$aFZ6`7Bic!eNOY<1Tokw6fGiWVc%}C{9HYIN2hjF5&d< zDe}TpRZhx*v9Vv^fV8+1bH$OetK_V(^(yA(M*=W6Y>s4?$jnsD1>YvGpnyn;0{3zU z0b3c+DE0ut86Z?2UChT^IUgj61uQ9%D%f-HlnDdSqab*JeX@x(&9MkVuTJag=QrTx zVlrvHs_C~KXf$qh2MK^;NdY8*Bl?jQCxt&@XXCEk6(mh~!~rHAX%i5Quwvw_gc5Mf zk>J&0j65U56fjmI5(qp3eCg%ew|_uWz|&>mkdoSb+;%9xxVShkFWu^=Xw!N(1PlyU z(@<_VX$Q99^#l<=3P{JRkr8r&L@#i1zkd6yoh3Q@FhAc#jAbn<^VGV}IHrT<9 z0rpHxQu0t^(<(xPwrLbqR@S}I0*O2XF{?J<>{J~mq&F~PR&`H0B_XU5%TkzAXJWaeQI@v8}1Q^C^uh~Gy=_owaK6yf5m7yZ}%a@)s*nK-QD=P~eyXmjxm6gZ`@tmv0pz=DD23LPqqX=>pOU=gzg3ns-S8S$pf&mTI<3Yl@*-oO`c~;}N!QQRCcT5mw2~ z%>~YAy4d&k0+ARBURiR^6z9#Hd5}e}0SdF-e@jq0S7?q^_21V!2dr@K95w|JY8wDT zHs~yHsRRZlCSe9j>x$$IE-?UKafH;)o;?d}4ds+)BPRQ)NW^q>bs1F#uK#TewImKm1{Vmb zgZVnX*jIpOzGNhjb+pkp~a4`ZZkB|J$Iy86OGh`52Zw6w75PkMC`*`GVN z?Saczi6+=_>cev50LVDkcsn{eVy6-Xk%R8z#{~pRKvqRt_t8rwSVrj1IIfrBSMZQP zVTSwq35=%`Oy#yGSf)F7?tB5f_3yd^Xh!r#$kjn&kR}djLO&)dpky%$?7}M0=U1>@ z;gj6$?fH?z9EnmeRn@&~Z}|1MBn)06g(P5daO| zTo=yK^`yBVBP$7iMQ!cLc=KGf`}}cA;0eC5AGQ>BbkgD(3}X~RcIC~9_F+dcGFIX? z{C!~BGtFE#IY(BVkC#{fv8gOV2o&oLxcN4|F^F^sm3=vqK}EN*bWWY_;)M%Tl-t2t zUI#0IaK^_+Qf0uA+FQ~H910MuK(W`;OIFI>N=Tand;(R|i#!*-ylPc*{Y%cUyo3!w zmbZ8BvlR&g68H{K)}y1187lM&hZk7EJxAGUN#Z^N<7Wu~B z!Ojl6tgz6~(h*xK3&AABi>v|I%xYM&RsrI}-L^;K3GzU+7>wFhVh@4z&mc|4&CT8M z;>C;JUSD8nj?$lpE*WqGxg{Qyn$&MsJg5MqRr|NMmhb`TV8BKvd)(yYJ$vNu5W`m2 zz4Z#|`ESm7Mz(>p!BWuFWR$JZaYgVf6~ZC7MDYkfx$p`26Y?u6E~Z~NbBT)%1WbGp z*Ak%oCYVG?kWRl~V`GD2c&h*o7gQz!DEWZR-?;c|-@YMS5=-csWebpzm)~}i zD-?kXBuqaRcBrOpZJKnXCV0RIXiyfo!xf6Nha`+5Fe5Jy0v;mXZD$-Dil3Q&UH8WO zwJ3xBPk`cvz|g*G%=QGPFt-suBFyOgyp^>zM(kcLd>05Cn76gGge3*Zjb4^Ih|KRL z0=uE1=K{)jz9i_iBws<0? z8}KKZ5RxD;{Sl;NZ4X7}K7I_f9^|IrU^3(veSJ}2@Wd&x7Ubr(S(Gt`KgZc$mY8_; zN=97^`yQG{PfiX;?m$vn+M#{>H3@!%9o*XAnjxK!HQIO1Jjq%iX2678W@m+KkxJ-#G%)GA%|% zybS}lTXc5%3E*vwkMog9gXDvY98z$o2T>|A(a0ZGi<|m)e}$M6Uq>tn=yT;W$vcw);!o?*$b1`SX6^ zT?9OzjE8WLxW(Yrs~P7Sk2D8dVz57){tnR9n8g-AWfc2Nudou=P~dV5DzZz3L+Y7w zIHzI>y>n$FwlD%Xi9ujqA#y`N%ozYCa!x^kGEW?MW)PF$TkxihjBp=~<%yJC+qcQ8 zW9)3-_BmqE5EAm2taSv8%j3tLK*p=BP5%3o5Ob3u4#V&zps}_m;HuBFM;i-Vg5|=Y zEgRXtfB!4%YpCiY+9CYQ;>E-)x?R`Qq-D*5DWQ8-T`dLx(cdl6Hm#_jprEXLg<(4Z zwHfR^T)%)^4nDf86dM?i6`m5Qqh8?&LBakh$5+F{dv@>UU}tAPas)1(Y}&IiE9(ki zMtohN8AN6)P?^~pd4tw4GsGs9gjlXn(01|%otbtJLIns^BwGk%tZ;d|Z~NyE?-_tH zZX(fpifK0{6)*zqb-K-IsW&*|!&eV2o;YQWZG;dRtkkMz<48191k0t-?UiO zSocc3QZ{l^TvhY;@DtTiG+E)deb*@cW-VTPZJk!Xy;oc69tA3 z6CnWcJbWmIfFCY8ePG^Oasn08e?h1;FJ2^V#aV;@7#hma&ezn?pd>yZbZafqn!RH0 zeNih<7x-rIOZ9KJHEOQVWD%Qq7BUd&ngR6LMnGSeu*%=G+jsNV1lB@OP|)l8b-W5@ zmHE@=K&~R*_>!DF`ZwIZ@4c*;*~dUe0yv$^OnX#pEM3~%j_pY7mwF-nc!NodZy~3o z-MjZY;PP9}=;#b1S}xMagNZ`&H^?<1TYP=u{C+(Ks|qvczhbyHEg|!Bn_Vf za%|n39;b1D+O5Fb$j?V=5}TByixVWgALC+#N!&REWdOhi*kZ(VO#nZ+p1g;w9oSvO zk5JbUFcZeXx&`et;I59*jf#?zB~0c^^d4wsDJU-fLcDU}Q@4L1=CY)oo> z8X;cVAgfOGFOw=Kx1EqG=9Ga0kATFY3>^

    vb@H&cbKqW$p(G7_-CPJks$^h6Hz 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 J*NPej{|^Zq#ohn_ literal 0 HcmV?d00001 diff --git a/other/ingress-nginx.md b/other/ingress-nginx.md new file mode 100644 index 0000000..c85ccd3 --- /dev/null +++ b/other/ingress-nginx.md @@ -0,0 +1,24 @@ +# ingress-nginx + + +```bash + +## 打上标签 +$ kubectl label node k8s-m1 ingress=true +$ kubectl get node --show-labels + +## 启动ingress-nginx +$ kubectl apply -f mandatory.yml + +## 查看pod +$ kubectl -n ingress-nginx get pod,services -o wide + +## 查看Pending创建pod失败原因; 检查label或端口占用 +$ kubectl -n ingress-nginx describe pod + +$ kubectl -n test get ing + +## curl 调试地址 +kubectl get pod -A -owide|grep nginx # 获取 ingress-nginx 地址 +curl -skL -HHost:myblog.pod.opsbase.cn 66.94.11.11/admin -v +``` \ No newline at end of file diff --git a/other/jenkins-部署.md b/other/jenkins-部署.md new file mode 100644 index 0000000..ed35a57 --- /dev/null +++ b/other/jenkins-部署.md @@ -0,0 +1,18 @@ +# jenkins + + +```bash +## 部署 +kubectl apply -f jenkins-all.yaml + +## 查看状态 +kubectl -n jenkins get deploy,po,svc,pv,ingress + +## 解锁 Jenkins +kubectl -n jenkins exec jenkins-master-xxxxxxx -- cat /var/jenkins_home/secrets/initialAdminPassword + +## 进入pod +kubectl -n jenkins exec -it jenkins-master-6884cfb558-d2f82 -- sh + +kubectl get po -A -owide|grep jnlp +``` \ No newline at end of file diff --git a/other/k8s常用命令汇总.md b/other/k8s常用命令汇总.md new file mode 100644 index 0000000..ef2e4cf --- /dev/null +++ b/other/k8s常用命令汇总.md @@ -0,0 +1,121 @@ +# K8s + +## kubectl + +```bash +###################### 查看信息 ###################### +kubectl get pod -n kube-system -owide # 查看默认命名空间pod +kubectl --kubeconfig config-test get pod -A # 指定配置文件,查看所有pod + +# 查看kube系统组件状态 +kubectl get nodes # 查看node状态 +kubectl get namespace # 命名空间 +kubectl get svc # 查看services +kubectl get deployment,pod,service -n test # 查看test命名空间 deployment,pod,service +kubectl get endpoints # 获取endpoints列表 + +kubectl get pod nginx-lb-b99649675-9hkb5 -o yaml # pod详细信息 +kubectl describe node xxx # 显示 node 的详细信息 +kubectl -n test describe pod xxx # 显示 pod 的详细信息 +kubectl describe svc -n kube-system # 查看svc网路明细 + + +###################### 创建pod ###################### +kubectl create namespace test # 创建命名空间 +kubectl create -f Deployment/nginx.yml # 部署nginx +kubectl get deployment -n test -owide # 查看test命名空间 deployment +kubectl -n test scale deployment/nginx-deployment --replicas=1 # 调整Deployment副本数,replicas=0 重启 +kubectl create deployment nginx --image nginx --port 80 --replicas=1 # 创建 nginx pod + +kubectl -n test expose deployment nginx-deployment --type=NodePort --port=80 # 添加NodePort +# kubectl port-forward service/nginx-lb 80:8080 + +###################### 查看pod日志 ###################### +kubectl -n test logs -f nginx-deployment-585449566-vglh4 # 查看log + +###################### 进入pod ###################### +kubectl -n test exec -it nginx-deployment-585449566-vglh4 -- bash + +###################### 释放pod ###################### +kubectl delete pod --all # 删除所有 Pod +kubectl delete service nginx-lb # 删除service +kubectl delete deployment,pod,service web1 # 删除deployment,pod,service +kubectl delete pod test-web --force --grace-period=0 # 强制删除,设置优雅关闭时间为0 + +kubectl delete -f recommended.yaml # 基于yml删除 +kubectl delete pod,service --all -n kubernetes-dashboard # 清理指定命名空间po,svc +###################### app部署管理 ###################### +kubectl set image deployment/{应用名称} {容器名称}={镜像库地址} -n {命名空间} +# 更新镜像版本 +kubectl cordon node主机 +# 将k8s-node1节点设置为不可调度模式 +kubectl drain node主机 +# 将当前运行在k8s-node1节点上的容器驱离 +kubectl uncordon node主机 +# #执行完维护后,将节点重新加入调度 + +kubectl describe node k8s-m1| grep Taints +# 查看master only状态 +kubectl taint nodes k8s-m1 node-role.kubernetes.io/master- +# 希望master当node使用 +kubectl taint nodes k8s-m1 node-role.kubernetes.io/master=:NoSchedule +# 还原taint +###################### labels标签管理 ###################### +kubectl get node --show-labels # 查看节点 labels +kubectl -n test get pod --show-labels # 查看pod labels + +kubectl delete pod,svc -l name= # 删除所有包含某个 label 的pod 和 service + +kubectl label nodes node主机 uname=snake # 节点设置标签 +kubectl label nodes node主机 uname- # 节点删除标签 +kubectl label nodes k8s-s1 standalone=true # 节点设置标签... + + + + +###################### create 和 apply ###################### +kubectl create -f pod.yaml +kubectl apply -f pod.yaml +# apply 可以重复执行,create 不行; +# 如果在单个文件上运行操作已创建资源,则create和apply基本相同。 但是, apply允许您在目录下的多个文件上同时创建和修补。 + +###################### yaml ###################### +kubectl create deployment web --image=nginx -o yaml --dry-run >> nginx.yml +# 生成yaml配置文件 + +kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=web1 -o yaml >> nginx-web1.yaml +# 对外暴露访问端口,生成yaml配置文件 + +kubectl edit deployment/nginx-deployment -n test # 编辑部署文件 + +###################### istio ###################### + +kubectl get virtualservice # 查看虚拟服务 +kubectl get destinationrule # 查看虚拟服务详情 +kubectl describe virtualservice # 自动注入代理边车 +kubectl label namespace istio-injection=enabled + + +###################### more ###################### + +# cp文件 +kubectl -n test cp busybox-x86_64 cmdb:/home/app/busybox +# 重启 pod +kubectl get pod -n -o yaml | kubectl replace --force -f - +# 修改网络类型 +kubectl patch service istio-ingressgateway -n istio-system -p '{"spec":{"type":"NodePort"}}' +# 查看前一个 pod 的日志,logs -p 选项 +kubectl logs --tail 100 -p user-klvchen-v1.0-6f67dcc46b-5b4qb > pre.log + +###################### docker ###################### +# docker资源限制 +--cpuset-cpus=0 多核CPU下绑定cpu核心标记 0-3范围 0,3多个 +--cpu-shares=1024 繁忙时段所占CPU比例 +-m 限制内存 -m 512m 限制512m内存 + +cpu-period: 设定docker运行容器重新分配CPU时间的周期(单位微秒) 1000微秒=1毫秒 最大值1000000=1秒 +cpu-quota: 在设置周期内分配给当前容器的CPU执行时间 + +# 更新运行中的docker限制 +docker update -m 4000m --memory-swap -1 ${name} +``` diff --git a/other/kubernetes-dashboard.md b/other/kubernetes-dashboard.md new file mode 100644 index 0000000..8bdfe3f --- /dev/null +++ b/other/kubernetes-dashboard.md @@ -0,0 +1,48 @@ + +# kubernetes-dashboard + +```bash + +wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml + +kubectl apply -f recommended.yaml + + +kubectl delete -f recommended.yaml +kubectl delete pod,service --all -n kubernetes-dashboard +``` + +## 使用NodePort端口 + + +``` +...... +spec: + ports: + - port: 443 + targetPort: 8443 + selector: + k8s-app: kubernetes-dashboard + type: NodePort # 加上type=NodePort变成NodePort类型的服务 +...... +``` + +## 查看状态 +``` +kubectl -n kubernetes-dashboard get svc,pod + +kubectl cluster-info +``` + +``` +kubectl apply -f dashboard-admin.conf +kubectl -n kubernetes-dashboard get secret |grep admin-token +admin-token-fqdpf kubernetes.io/service-account-token 3 7m17s + +# 使用该命令拿到admin-token-xxxx,然后粘贴 +kubectl -n kubernetes-dashboard get secret admin-token-fqdpf -o jsonpath={.data.token}|base64 -d +eyJhbGciOiJSUzI1NiIsImtpZCI6Ik1rb2xHWHMwbWFPMjJaRzhleGRqaExnVi1BLVNRc2txaEhETmVpRzlDeDQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi10b2tlbi1mcWRwZiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJhZG1pbiIsImt1YmVy...... +``` + + +https://66.94.121.23:30571/ \ No newline at end of file diff --git a/other/调度md b/other/调度md new file mode 100644 index 0000000..d67acc6 --- /dev/null +++ b/other/调度md @@ -0,0 +1,9 @@ + +# 调度 + + +## watch方式监听etcd,pod无状态多副本 + +```bash + +``` \ No newline at end of file diff --git a/other/面试题...md b/other/面试题...md new file mode 100644 index 0000000..8afc6e3 --- /dev/null +++ b/other/面试题...md @@ -0,0 +1,5 @@ +# namespace + +# cgroup + +# kubeporxy \ No newline at end of file