diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/2.\345\256\271\345\231\250\347\274\226\346\216\222(\345\255\246\344\271\240\347\216\257\345\242\203 k8s)/3.\345\256\211\350\243\205kind/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/2.\345\256\271\345\231\250\347\274\226\346\216\222(\345\255\246\344\271\240\347\216\257\345\242\203 k8s)/3.\345\256\211\350\243\205kind/config.json" index c4e3a049c8a6abe66197c7fe2938c417a9953744..c5be3608abcd6bfb00ad739029e107897e7a5ac8 100644 --- "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/2.\345\256\271\345\231\250\347\274\226\346\216\222(\345\255\246\344\271\240\347\216\257\345\242\203 k8s)/3.\345\256\211\350\243\205kind/config.json" +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/2.\345\256\271\345\231\250\347\274\226\346\216\222(\345\255\246\344\271\240\347\216\257\345\242\203 k8s)/3.\345\256\211\350\243\205kind/config.json" @@ -3,9 +3,9 @@ "keywords": [], "children": [], "export": [ - "start_k8s.json", "install_kind.json", "get_info.json", + "start_k8s.json", "start_k8s_three_nodes.json" ], "keywords_must": [], diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/2.\345\256\271\345\231\250\347\274\226\346\216\222(\345\255\246\344\271\240\347\216\257\345\242\203 k8s)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/2.\345\256\271\345\231\250\347\274\226\346\216\222(\345\255\246\344\271\240\347\216\257\345\242\203 k8s)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/config.json" index 9c756af50dda786a4b2b4c9c767260f5598545cd..61c52660e5fa4df493352c883d9591b8f7ef241f 100644 --- "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/2.\345\256\271\345\231\250\347\274\226\346\216\222(\345\255\246\344\271\240\347\216\257\345\242\203 k8s)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/config.json" +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/2.\345\256\271\345\231\250\347\274\226\346\216\222(\345\255\246\344\271\240\347\216\257\345\242\203 k8s)/5.kubectl\351\203\250\347\275\262\344\270\200\344\270\252Python\347\250\213\345\272\217/config.json" @@ -4,8 +4,8 @@ "children": [], "export": [ "create_deployment.json", - "create_service.json", - "rs_pod.json" + "rs_pod.json", + "create_service.json" ], "keywords_must": [], "keywords_forbid": [] diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/1.\345\256\211\350\243\205helm/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/1.\345\256\211\350\243\205helm/config.json" new file mode 100644 index 0000000000000000000000000000000000000000..ca653ef2bec58b33244ce1e6ac09e01f397d08c9 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/1.\345\256\211\350\243\205helm/config.json" @@ -0,0 +1,10 @@ +{ + "node_id": "cloud_native-d803deb6ed5043f2925cb47b555ea9bc", + "keywords": [], + "children": [], + "export": [ + "install.json" + ], + "keywords_must": [], + "keywords_forbid": [] +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/1.\345\256\211\350\243\205helm/img/install.png" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/1.\345\256\211\350\243\205helm/img/install.png" new file mode 100644 index 0000000000000000000000000000000000000000..3199546275091ceaab7770727821a1a6964fda47 Binary files /dev/null and "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/1.\345\256\211\350\243\205helm/img/install.png" differ diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/1.\345\256\211\350\243\205helm/install.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/1.\345\256\211\350\243\205helm/install.json" new file mode 100644 index 0000000000000000000000000000000000000000..7427ec3197589930b387cea194d71e6eb4d133f9 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/1.\345\256\211\350\243\205helm/install.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": "huanhuilong", + "source": "install.md", + "notebook_enable": false, + "exercise_id": "17f5443a8179431ba8fd628725cae86f" +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/1.\345\256\211\350\243\205helm/install.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/1.\345\256\211\350\243\205helm/install.md" new file mode 100644 index 0000000000000000000000000000000000000000..3ad8bd7af9a697de7051d3d32d2fcb9e717af57b --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/1.\345\256\211\350\243\205helm/install.md" @@ -0,0 +1,57 @@ +# 安装 helm + +Linux系统上有包管理软件 +* 例如 centos 上有 yum +* 例如 ubuntu 上有 apt-get + +Mac系统上有包管理软件 +* 例如 brew + +Windows 上也有可用的包管理软件 +* 例如 scoop +* 例如 choco + +云原生的事实标准平台 k8s 上也可以安装各种组件和服务。而 helm 就是 k8s 的包管理软件,用来给 k8s 平台安装各种组件包或者服务包。 + +在不同平台上,通过对应平台的包管理软件,[可以快速安装 helm 客户端命令](https://helm.sh/docs/intro/install/)。 + +例如 Windows 上(注:choco 是Windows上的一个包管理命令[chocolatey](https://chocolatey.org/)) + +```bash +choco install kubernetes-helm +``` + +例如 Mac 上,直接使用 brew 安装: + +```bash +brew install helm +``` + +![](./img/install.png) + + +以下说法错误的是? + +## 答案 + +helm 是用来安装 k8s 集群的软件 + +## 选项 + +### A + +不使用 helm 也可以给 k8s 安装包和组件,helm 简化了 k8s 上的包和服务的组件的安装 + +### B + +在不同的操作系统上,可以通过对应操作系统本身的包管理软件安装 helm 这个 K8s 的包管理软件 + +### C + +helm 是 Kubernetes 的包管理器 + + + + + + diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/2.helm\344\270\211\345\244\247\346\246\202\345\277\265/concept.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/2.helm\344\270\211\345\244\247\346\246\202\345\277\265/concept.json" new file mode 100644 index 0000000000000000000000000000000000000000..2943e7d633d0d40298a6167a00fcb6859b103803 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/2.helm\344\270\211\345\244\247\346\246\202\345\277\265/concept.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": "huanhuilong", + "source": "concept.md", + "notebook_enable": false, + "exercise_id": "eba3e7be19594218bb6be54b11fbfe27" +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/2.helm\344\270\211\345\244\247\346\246\202\345\277\265/concept.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/2.helm\344\270\211\345\244\247\346\246\202\345\277\265/concept.md" new file mode 100644 index 0000000000000000000000000000000000000000..3c6506ef34bf841bbd2ed31aebc2d4d2f207b9e7 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/2.helm\344\270\211\345\244\247\346\246\202\345\277\265/concept.md" @@ -0,0 +1,27 @@ +# helm三大概念(Chart、Repository、Release) + +helm 通过三大概念来管理 k8s 上的包 +* Chart:Chart 代表着 helm 包。它包含在 Kubernetes 集群内部运行应用程序,工具或服务所需的所有资源定义。 +* Repository:是 chart 的存储库。例如:https://charts.bitnami.com/bitnami +* Release:Release 是运行在 Kubernetes 集群中的 chart 的实例。一个 chart 通常可以在同一个集群中安装多次。每一次安装都会创建一个新的 release。以 MySQL chart为例,如果你想在你的集群中运行两个数据库,你可以安装该chart两次。每一个数据库都会拥有它自己的 release 和 release name。 + + +一下说法错误的是? + +## 答案 + +一个Heml的Chart,只能被安装到 k8s 集群一次,再次安装会失败 + +## 选项 + +### A + +一个helm的Chart,可以被多次安装到 k8s 集群,每次安装是一个独立的 release + +### B + +可以将一个helm 的Chart 上传到它的 Repository上,然后从Repository来安装一个Chart + +### C + +helm 通过 Chart 来定义一个 k8s 的组件包 diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/2.helm\344\270\211\345\244\247\346\246\202\345\277\265/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/2.helm\344\270\211\345\244\247\346\246\202\345\277\265/config.json" new file mode 100644 index 0000000000000000000000000000000000000000..62e9218b3fa3493d4edad897370d6c0dde2fcced --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/2.helm\344\270\211\345\244\247\346\246\202\345\277\265/config.json" @@ -0,0 +1,10 @@ +{ + "node_id": "cloud_native-ef938d686b4045f2a2da9e6b57500851", + "keywords": [], + "children": [], + "export": [ + "concept.json" + ], + "keywords_must": [], + "keywords_forbid": [] +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/config.json" new file mode 100644 index 0000000000000000000000000000000000000000..5c66f03079a81d7055e91a879da720addf5f3b58 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/config.json" @@ -0,0 +1,10 @@ +{ + "node_id": "cloud_native-e25cf855bd204baa82d43aeda5509431", + "keywords": [], + "children": [], + "export": [ + "install.json" + ], + "keywords_must": [], + "keywords_forbid": [] +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/img/install_mysql_chart.png" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/img/install_mysql_chart.png" new file mode 100644 index 0000000000000000000000000000000000000000..dd76bfc84c1a0dd8480e6735250885dbcd4ab469 Binary files /dev/null and "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/img/install_mysql_chart.png" differ diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/img/list.png" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/img/list.png" new file mode 100644 index 0000000000000000000000000000000000000000..ee87ee108ea2153ac7dc099d5fd8a5d1960aba5a Binary files /dev/null and "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/img/list.png" differ diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/img/repo.png" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/img/repo.png" new file mode 100644 index 0000000000000000000000000000000000000000..16539a665153f66360596839573193dfd4e29a16 Binary files /dev/null and "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/img/repo.png" differ diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/img/repo_mysql.png" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/img/repo_mysql.png" new file mode 100644 index 0000000000000000000000000000000000000000..433ba7e50e35beb4b10af2aca829fbd28688ea2a Binary files /dev/null and "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/img/repo_mysql.png" differ diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/img/status.png" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/img/status.png" new file mode 100644 index 0000000000000000000000000000000000000000..33e50fdd289fad00dded54a485428757e953194a Binary files /dev/null and "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/img/status.png" differ diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/install.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/install.json" new file mode 100644 index 0000000000000000000000000000000000000000..e3768027b69576992f3591f56f4c91eb746808da --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/install.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": "huanhuilong", + "source": "install.md", + "notebook_enable": false, + "exercise_id": "7873f9f3910e449eb4021ac1ae6bfad2" +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/install.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/install.md" new file mode 100644 index 0000000000000000000000000000000000000000..2e6df603a108ef710ff9ee2c6d9ad4f0822134aa --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/3.\344\275\277\347\224\250helm\345\256\211\350\243\205mysql\345\210\260k8s/install.md" @@ -0,0 +1,65 @@ +# 使用helm安装mysql + +首先,初始化下 helm 的仓库,命名为 bitnami + +```bash +helm repo add bitnami https://charts.bitnami.com/bitnami +``` + +其次,查看下仓库 bitnami 里有哪些包 + +```bash +helm search repo bitnami +``` + +![](./img/repo.png) + +接着,通过 grep 命令过滤下 mysql 包相关的信息 + +```bash +helm serach repo|grep mysql +``` + +![](./img/repo_mysql.png) + +然后,安装 mysql 包到 k8s,可以看到安装的 + +```bash +helm repo update # 确定我们可以拿到最新的charts列表 +helm install bitnami/mysql --generate-name +``` + +![](./img/install_mysql_chart.png) + +查看已经安装的 chart 列表,可以看到mysql已经装上了: + +```bash +helm list +``` + +![](./img/list.png) + +现在,使用`helm status xxx`命令查看已安装mysql的状态 + +![](./img/status.png) + + +以下说法错误的是? + +## 答案 + +helm install 后 mysql 服务就启动了 + +## 选项 + +### A + +kubectl 命令可以获取安装的 mysql 密钥 + +### B + +安装后的 mysql 可以通过 kubectl run 命令在pod上启动 mysql服务 + +### C + +可以通过 helm 在 k8s 上安装 mysql \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/4.\344\275\277\347\224\250helm\351\203\250\347\275\262Python\345\272\224\347\224\250/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/4.\344\275\277\347\224\250helm\351\203\250\347\275\262Python\345\272\224\347\224\250/config.json" new file mode 100644 index 0000000000000000000000000000000000000000..a547cded33b8ed815331362892a0a71ae4324851 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/4.\344\275\277\347\224\250helm\351\203\250\347\275\262Python\345\272\224\347\224\250/config.json" @@ -0,0 +1,10 @@ +{ + "node_id": "cloud_native-89d35bea670a42a3aa7c135154ba16f1", + "keywords": [], + "children": [], + "export": [ + "deploy.json" + ], + "keywords_must": [], + "keywords_forbid": [] +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/4.\344\275\277\347\224\250helm\351\203\250\347\275\262Python\345\272\224\347\224\250/deploy.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/4.\344\275\277\347\224\250helm\351\203\250\347\275\262Python\345\272\224\347\224\250/deploy.json" new file mode 100644 index 0000000000000000000000000000000000000000..513805f5fcfef3cb78f6a26114bd454f782014bb --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/4.\344\275\277\347\224\250helm\351\203\250\347\275\262Python\345\272\224\347\224\250/deploy.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": "huanhuilong", + "source": "deploy.md", + "notebook_enable": false, + "exercise_id": "193082c8382e4f8bab07c32bff8b3b95" +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/4.\344\275\277\347\224\250helm\351\203\250\347\275\262Python\345\272\224\347\224\250/deploy.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/4.\344\275\277\347\224\250helm\351\203\250\347\275\262Python\345\272\224\347\224\250/deploy.md" new file mode 100644 index 0000000000000000000000000000000000000000..de1f8f74527656384adbea2ce736788768e1a04c --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/4.\344\275\277\347\224\250helm\351\203\250\347\275\262Python\345\272\224\347\224\250/deploy.md" @@ -0,0 +1,104 @@ +# 使用 helm 部署 Python 应用 + +回归下示例Python应用 cloud_native_hello_py 的目录结构: + +```bash +. +├── Dockerfile +├── README.md +├── k8s.deployment.yaml +├── k8s.service.yaml +└── src + ├── main.py + └── requirements.txt +``` + +我们使用 kubectl 命令部署过该 Python 服务,现在,我们用 helm 来部署。 + +首先,在项目命令下通过 helm 命令创建一个chart 配置文件夹 + +```bash +makedir chart +cd chart +helm create hello-py +``` + +此时,目录结构如下: + +```bash +. +├── Dockerfile +├── README.md +├── chart +│   └── hello-py +│   ├── Chart.yaml +│   ├── charts +│   ├── templates +│   │   ├── NOTES.txt +│   │   ├── _helpers.tpl +│   │   ├── deployment.yaml +│   │   ├── hpa.yaml +│   │   ├── ingress.yaml +│   │   ├── service.yaml +│   │   ├── serviceaccount.yaml +│   │   └── tests +│   │   └── test-connection.yaml +│   └── values.yaml +├── k8s.deployment.yaml +├── k8s.service.yaml +└── src + ├── main.py + └── requirements.txt +``` + +其中: + +* Chart.yaml: 基本描述 +* values.yaml: 配置镜像名称等 +* charts: 用于存放依赖的其他 chart +* templates: 用于存放需要的配置模板 + +修改 values.yaml: +```bash +replicaCount: 1 + +image: + image: fanfeilong/cloud_native_hello_py + pullPolicy: IfNotPresent +``` + +现在,使用 heml 安装 + +```bash +helm install ./chart/hello-py/ --generate-name +``` + +检测下 k8s 的 deployment 和 sevice: + +![](./img/status.png) + +端口转发: +![](./img/port.png) + +访问服务: +![](./img/visit.png) + +以下说法错误的是? + +## 答案 + +helm 部署的 k8s 应用没法通过 kubectl 管理 + +## 选项 + +### A + +helm 通过chart依赖来解决所部署的k8s应用之间的依赖 + +### B + +helm 通过chart管理k8s应用部署的配置和模版 + +### C + +helm 可以规范化k8s应用的配置和部署 diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/4.\344\275\277\347\224\250helm\351\203\250\347\275\262Python\345\272\224\347\224\250/img/port.png" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/4.\344\275\277\347\224\250helm\351\203\250\347\275\262Python\345\272\224\347\224\250/img/port.png" new file mode 100644 index 0000000000000000000000000000000000000000..d6fb13a653aec7d0602e4742d128f5690c63cb20 Binary files /dev/null and "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/4.\344\275\277\347\224\250helm\351\203\250\347\275\262Python\345\272\224\347\224\250/img/port.png" differ diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/4.\344\275\277\347\224\250helm\351\203\250\347\275\262Python\345\272\224\347\224\250/img/status.png" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/4.\344\275\277\347\224\250helm\351\203\250\347\275\262Python\345\272\224\347\224\250/img/status.png" new file mode 100644 index 0000000000000000000000000000000000000000..9534ddb7c1d3eab6056425006454ae9505fcf83d Binary files /dev/null and "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/4.\344\275\277\347\224\250helm\351\203\250\347\275\262Python\345\272\224\347\224\250/img/status.png" differ diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/4.\344\275\277\347\224\250helm\351\203\250\347\275\262Python\345\272\224\347\224\250/img/visit.png" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/4.\344\275\277\347\224\250helm\351\203\250\347\275\262Python\345\272\224\347\224\250/img/visit.png" new file mode 100644 index 0000000000000000000000000000000000000000..98e93fe67411481e00f0cbd87fc76ac8fd3edcce Binary files /dev/null and "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/4.\344\275\277\347\224\250helm\351\203\250\347\275\262Python\345\272\224\347\224\250/img/visit.png" differ diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/config.json" new file mode 100644 index 0000000000000000000000000000000000000000..43d86f5b140cbabb554dfd2fe5527278a93b4495 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.k8s\345\214\205\347\256\241\347\220\206(helm)/config.json" @@ -0,0 +1,6 @@ +{ + "node_id": "cloud_native-d0ad36090d874dc0bd72503ea16c0ad5", + "keywords": [], + "keywords_must": [], + "keywords_forbid": [] +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/1.ServiceMesh\344\273\213\347\273\215/introduce.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/1.ServiceMesh\344\273\213\347\273\215/introduce.md" deleted file mode 100644 index 7cb2baca7a319754b250847fbe8679b06f168705..0000000000000000000000000000000000000000 --- "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/1.ServiceMesh\344\273\213\347\273\215/introduce.md" +++ /dev/null @@ -1,36 +0,0 @@ -# 服务网格(ServiceMesh) - -客户端请求网页常常会经过代理,代理请求后面的服务,后台服务返回给代理,代理再返回给客户端。这是一个典型的代理服务的情景。大概是这样: - -```bash -Client <-> Proxy <-> Server -``` - -现代后端开发,将服务拆分成多个微服务是常见的做法。 - -```bash -Client <-> Interface <-> [ProxyA->ServerA] <-> [ProxyB->ServerB] -Client <-> Interface <-> [ProxyB->ServerB] <-> [ProxyA->ServerA] -``` - -微服务之间的互相访问,公共的代理部分可以做很多公共的控制逻辑。这部分的的代码标准化,下层到云原生的基础设施里,就形成了服务网格(ServiceMesh)。 - -以下说法错误的是? - -## 答案 - -使用了微服务,就一定要用服务网格(ServiceMesh). - -## 选项 - -### A - -服务网格将公共的服务间路由和共享数据逻辑抽象出来,作为一个基础架构层。 - -### B - -微服务可以没有服务网格,每个服务自己写一些服务间路由代码。 - -### C - -服务网格的特点是内置的基础架构层。 diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/install.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/install.md" deleted file mode 100644 index a447c184c7aaa9ee5f088c42158140caf4682c08..0000000000000000000000000000000000000000 --- "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/install.md" +++ /dev/null @@ -1,21 +0,0 @@ -# {在此填写标题} - -{在此填写题目描述} - -## 答案 - -{在此填写答案} - -## 选项 - -### A - -{在此填写选项A} - -### B - -{在此填写选项B} - -### C - -{在此填写选项C} diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/1.ServiceMesh\344\273\213\347\273\215/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/1.ServiceMesh\344\273\213\347\273\215/config.json" similarity index 100% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/1.ServiceMesh\344\273\213\347\273\215/config.json" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/1.ServiceMesh\344\273\213\347\273\215/config.json" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/1.ServiceMesh\344\273\213\347\273\215/img/k8s_native_vs_service_mesh.png" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/1.ServiceMesh\344\273\213\347\273\215/img/k8s_native_vs_service_mesh.png" new file mode 100644 index 0000000000000000000000000000000000000000..137691527f4c51934225035028c17886476916ef Binary files /dev/null and "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/1.ServiceMesh\344\273\213\347\273\215/img/k8s_native_vs_service_mesh.png" differ diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/1.ServiceMesh\344\273\213\347\273\215/introduce.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/1.ServiceMesh\344\273\213\347\273\215/introduce.json" similarity index 82% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/1.ServiceMesh\344\273\213\347\273\215/introduce.json" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/1.ServiceMesh\344\273\213\347\273\215/introduce.json" index a7f3b47d3195f2f32e7e41225ccaa9c5e9170773..cf7ac6144267e4789fe0bc0e81b5f491b1042464 100644 --- "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/1.ServiceMesh\344\273\213\347\273\215/introduce.json" +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/1.ServiceMesh\344\273\213\347\273\215/introduce.json" @@ -1,6 +1,6 @@ { "type": "code_options", - "author": null, + "author": "huanhuilong", "source": "introduce.md", "notebook_enable": false, "exercise_id": "ab4f320185c64e9ea8a71d5928482709" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/1.ServiceMesh\344\273\213\347\273\215/introduce.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/1.ServiceMesh\344\273\213\347\273\215/introduce.md" new file mode 100644 index 0000000000000000000000000000000000000000..26e06add54049b7d9c04615409ca5b3118826d8c --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/1.ServiceMesh\344\273\213\347\273\215/introduce.md" @@ -0,0 +1,47 @@ +# 服务网格(ServiceMesh) + +客户端请求网页常常会经过代理,代理请求后面的服务,后台服务返回给代理,代理再返回给客户端。这是一个典型的代理服务的情景。大概是这样: + +```bash +Client <-> Proxy <-> Server +``` + +现代后端开发,将服务拆分成多个微服务是常见的做法。 + +```bash +Client <-> Interface <-> [ProxyA->ServerA] <-> [ProxyB->ServerB] +Client <-> Interface <-> [ProxyB->ServerB] <-> [ProxyA->ServerA] +``` + +微服务之间的互相访问,公共的代理部分可以做很多公共的控制逻辑。这部分的的代码标准化,下层到云原生的基础设施里,就形成了服务网格(ServiceMesh)。服务网格通常管理微服务之间这三个方面的功能: + +1. 流量管理(Traffic management):动态服务发现、路由、流量灰度和流量分离等。 +2. 安全(Security):加密传输、基于正式验证的授权、基于访问控制和网络分区的授权等。 +3. 可观察性(Observability): 例如链路跟踪、日志等。 + +服务网格和 k8s 之间是什么关系呢?一图胜千言,在k8s的基础上,为每个pod增加一个proxy(或者叫边车,sidecar),有两个变化: + +1. 原来k8s的node里的pod通过node的kube-proxy和 API Server 通信;在ServiceMesh下,每个pod直接通过装在pod上的proxy和API Server通信。 +2. 原来k8s的node里的pod通过node的kube-proxy桥接通信;在ServiceMesh下,每个 pod 之间直接通过装在 pod上的proxy直接通信。 + +![](./img/k8s_native_vs_service_mesh.png) + +以下说法错误的是? + +## 答案 + +服务网格之间的通信都要通过 API Server 转发。 + +## 选项 + +### A + +服务网格通常解决流量管理、服务安全、服务可观察性问题。 + +### B + +在k8s原生组件的基础上,给每个pod安装服务网格的proxy,对这些proxy的编排调度,构成里服务网格层。 + +### C + +服务网格的特点是,将微服务管理功能内置到基础架构层,无需在应用层写相关代码。 diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/config.json" similarity index 80% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/config.json" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/config.json" index fc54030b2104810412cfe0da7300cdbe1d61e14e..33e89f4641f5f918e679e4abad9847e91cdbe80f 100644 --- "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/config.json" +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/config.json" @@ -3,7 +3,8 @@ "keywords": [], "children": [], "export": [ - "install.json" + "install.json", + "install2.json" ], "keywords_must": [], "keywords_forbid": [] diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/img/commands.png" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/img/commands.png" new file mode 100644 index 0000000000000000000000000000000000000000..1fe49a48c75a19a6cd4ff67871a74ec5f7d6b6c8 Binary files /dev/null and "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/img/commands.png" differ diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/img/download.png" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/img/download.png" similarity index 100% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/img/download.png" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/img/download.png" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/img/dump_profile.png" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/img/dump_profile.png" new file mode 100644 index 0000000000000000000000000000000000000000..37d7ce039f048ea53592b18a96365d49d2882978 Binary files /dev/null and "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/img/dump_profile.png" differ diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/install.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/install.json" similarity index 82% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/install.json" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/install.json" index ffbd97a23a47d2d83dd809d1ace16f67296b4c79..1b7a65b6fd234dbb1611ff80e94e5473ef6ec994 100644 --- "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/install.json" +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/install.json" @@ -1,6 +1,6 @@ { "type": "code_options", - "author": null, + "author": "huanhuilong", "source": "install.md", "notebook_enable": false, "exercise_id": "0e05870e435d4d90a0192aecbde5e8ff" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/install.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/install.md" new file mode 100644 index 0000000000000000000000000000000000000000..cc079a8aa714070100ba5068ed2ca8f48fada287 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/install.md" @@ -0,0 +1,134 @@ +# 使用istioctl安装istio + +istio 是服务网格基础设施的一种实现,支持在多个不同的云原生基础设施上工作。下载 istio: + +```bash +curl -L https://istio.io/downloadIstio | sh - +``` + +但是可能会遇到各种网络导致的下载问题,也可以直接在[发布页面](https://github.com/istio/istio/releases/)找到不同操作系统最新版本发布包下载。例如: + +```bash +wget https://github.com/istio/istio/releases/download/1.13.2/istio-1.13.2-osx.tar.gz +``` + +下载后解压,并查看目录结构 + +```bash +tar xf istio-1.13.2-osx.tar.gz +cd istio-1.13.2/ +tree -L 2 +``` + +可以看到目录结构如下: + +```bash +. +├── LICENSE +├── README.md +├── bin +│   └── istioctl +├── manifest.yaml +├── manifests +│   ├── charts +│   ├── examples +│   └── profiles +├── samples +│   ├── README.md +│   ├── addons +│   ├── bookinfo +│   ├── certs +│   ├── custom-bootstrap +│   ├── extauthz +│   ├── external +│   ├── grpc-echo +│   ├── health-check +│   ├── helloworld +│   ├── httpbin +│   ├── jwt-server +│   ├── kind-lb +│   ├── kubernetes-blog +│   ├── multicluster +│   ├── open-telemetry +│   ├── operator +│   ├── ratelimit +│   ├── security +│   ├── sleep +│   ├── tcp-echo +│   └── websockets +└── tools + ├── _istioctl + ├── certs + └── istioctl.bash +``` + +其中: +* bin/ 目录下是istio的命令行客户端程序 +* samples/ 下是各种应用例子 + +把 bin/ 目录添加到系统的PATH路径(Linux/Mac): + +```bash +export PATH=$PWD/bin:$PATH +``` + +或者安装到系统bin目录: + +```bash +sudo install bin/istioctl /usr/local/bin/istioctl +``` + +现在,执行 istioctl 命令回车: + +```bash +istioctl +``` + +可以看到 istioctl 支持的子命令列表: + +![](./img/commands.png) + +istio 通过`profile`对不同的配置分组,内置的`profile`列表可以通过命令`istioctl profile list`查看: + +```bash +Istio configuration profiles: + default + demo + empty + external + minimal + openshift + preview + remote +``` + +例如,使用命令`istioctl profile dump demo`查看名为`demo`的`profile`: + +![](./img/dump_profile.png) + +配置`profile=demo`,安装istio到k8s + +``` +istioctl install --set profile=demo +``` + + +以下说法错误的是? + +## 答案 + +istioctl 只能使用一种 profile 安装,一旦安装不可更改 + +## 选项 + +### A + +istio 可以在不同的云原生基础设施上工作,例如 k8s, meos等 + +### B + +istioctl 是 istio 的命令行客户端,通过istioctrl的一组子命令可以管理服务网格基础服务 + +### C + +istio 是ServiceMash的一种实现,可以在 k8s 系统上安装 istio 组件 diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/install2.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/install2.json" new file mode 100644 index 0000000000000000000000000000000000000000..11e628d823ff28e53b90dac3684219aca10b4fcd --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/install2.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": "huanhuilong", + "source": "install2.md", + "notebook_enable": false, + "exercise_id": "cb235d71027d44bd8a0c4297c32e0a7e" +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/install2.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/install2.md" new file mode 100644 index 0000000000000000000000000000000000000000..fe5477cbe1c750c5aa2c2caaba4af9556fa90993 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/2.\345\256\211\350\243\205istio/install2.md" @@ -0,0 +1,37 @@ +# 使用 helm 安装istio + +更便利的方式是使用 helm 安装 istio。首先添加istio repo + +```bash +helm repo add istio https://istio-release.storage.googleapis.com/charts +``` + +其次,创建一个k8s namespace: +```bash +kubectl create namespace istio-system +``` + +接着,安装istio到k8s集群 +```bash +helm install istio-base istio/base -n istio-system +``` + +以下说法错误的是? + +## 答案 + +通过helm 安装的istio和通过istioctl安装的有很大差异 + +## 选项 + +### A + +可以不创建k8s 名称空间,直接将istio安装到k8s默认名称空间 + +### B + +通过 helm 参数 -n 将 istio 安装到指定的 k8s 名称空间 + +### C + +使用 helm 安装 istio 比直接用 istioctl 安装方便 diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/3.\344\275\277\347\224\250istio\347\233\221\346\216\247\346\234\215\345\212\241/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/3.istio\346\265\201\351\207\217\347\256\241\347\220\206/config.json" similarity index 79% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/3.\344\275\277\347\224\250istio\347\233\221\346\216\247\346\234\215\345\212\241/config.json" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/3.istio\346\265\201\351\207\217\347\256\241\347\220\206/config.json" index 1559fa4cd670c13dded9b5a5360c51170784243f..788811b51872062950a8602647c6740175826e71 100644 --- "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/3.\344\275\277\347\224\250istio\347\233\221\346\216\247\346\234\215\345\212\241/config.json" +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/3.istio\346\265\201\351\207\217\347\256\241\347\220\206/config.json" @@ -2,7 +2,9 @@ "node_id": "cloud_native-80dec61abcca4348a6fdc9b9b727b486", "keywords": [], "children": [], - "export": [], + "export": [ + "traffic.json" + ], "keywords_must": [], "keywords_forbid": [] } \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/3.istio\346\265\201\351\207\217\347\256\241\347\220\206/traffic.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/3.istio\346\265\201\351\207\217\347\256\241\347\220\206/traffic.json" new file mode 100644 index 0000000000000000000000000000000000000000..5942b3d69047b6aca3ebbf177ed41a04fa6e87b0 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/3.istio\346\265\201\351\207\217\347\256\241\347\220\206/traffic.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": "huanhuilong", + "source": "traffic.md", + "notebook_enable": false, + "exercise_id": "b4cea99c59f946e7be5c08dccd76649e" +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/3.istio\346\265\201\351\207\217\347\256\241\347\220\206/traffic.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/3.istio\346\265\201\351\207\217\347\256\241\347\220\206/traffic.md" new file mode 100644 index 0000000000000000000000000000000000000000..9be25ef724ca162ed12a746ff4dec086e2ce77ef --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/3.istio\346\265\201\351\207\217\347\256\241\347\220\206/traffic.md" @@ -0,0 +1,35 @@ +# istio 流量管理 + + +下面是一组 istio 流量管理的实战文档 + +* [配置请求路由(request-routing)](https://istio.io/latest/zh/docs/tasks/traffic-management/request-routing): 如何将请求动态路由到微服务的多个版本。 +* [故障注入(fault-injection)](https://istio.io/latest/zh/docs/tasks/traffic-management/fault-injection):此任务说明如何注入故障并测试应用程序的弹性。 +* [流量转移(traffic-shifting)](https://istio.io/latest/zh/docs/tasks/traffic-management/traffic-shifting): 展示如何将流量从旧版本迁移到新版本的服务。 +* [TCP 流量转移(tcp-traffic-shifting)](https://istio.io/latest/zh/docs/tasks/traffic-management/tcp-traffic-shifting): 展示如何将一个服务的 TCP 流量从旧版本迁移到新版本。 +* [设置请求超时(request-timeouts)](https://istio.io/latest/zh/docs/tasks/traffic-management/request-timeouts):本任务用于示范如何使用 Istio 在 Envoy 中设置请求超时。 +* [熔断(circuit-breaking)](https://istio.io/latest/zh/docs/tasks/traffic-management/circuit-breaking):本任务展示如何为连接、请求以及异常检测配置熔断。 +* [镜像(mirroring)](https://istio.io/latest/zh/docs/tasks/traffic-management/mirroring):此任务演示了 Istio 的流量镜像/影子功能。 +* [地域负载均衡(locality-load-balancing)](https://istio.io/latest/zh/docs/tasks/traffic-management/locality-load-balancing):本系列任务演示如何在 Istio 中配置地域负载均衡。 +* [Ingress](https://istio.io/latest/zh/docs/tasks/traffic-management/ingress):控制 Istio 服务网格的入口流量。 +* [Egress](https://istio.io/latest/zh/docs/tasks/traffic-management/egress):控制 Istio 服务网格的出口流量。 + +以下说法错误的是? + +## 答案 + +通过 istio 没办法测试超时请求 + +## 选项 + +### A + +通过 istio 的 Ingress 和 Egress,可以控制服务网格的出口和入口流量 + +### B + +通过 istio 的流量转移,可以做灰度发布 + +### C + +通过 istio 可以在 k8s 的服务网格内将请求路由到服务的不同版本 \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/4.istio\345\256\211\345\205\250/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/4.istio\345\256\211\345\205\250/config.json" new file mode 100644 index 0000000000000000000000000000000000000000..77fa799c4f4253d2da9a3d7225db646f67962e5e --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/4.istio\345\256\211\345\205\250/config.json" @@ -0,0 +1,10 @@ +{ + "node_id": "cloud_native-029c7b191f8347d69d807d04fd315ced", + "keywords": [], + "children": [], + "export": [ + "security.json" + ], + "keywords_must": [], + "keywords_forbid": [] +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/4.istio\345\256\211\345\205\250/security.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/4.istio\345\256\211\345\205\250/security.json" new file mode 100644 index 0000000000000000000000000000000000000000..377fe21866a7c5283a99826a94705a6ba3394775 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/4.istio\345\256\211\345\205\250/security.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": "huanhuilong", + "source": "security.md", + "notebook_enable": false, + "exercise_id": "16380db9ebce4f218b04013dca03b5db" +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/4.istio\345\256\211\345\205\250/security.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/4.istio\345\256\211\345\205\250/security.md" new file mode 100644 index 0000000000000000000000000000000000000000..375e5147f8a8d82fd092f7114053ade4832b65f5 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/4.istio\345\256\211\345\205\250/security.md" @@ -0,0 +1,25 @@ +# istio 安全管理 + +通过 istio 可以做一下哪些安全控制? + +1. 认证:管控网格服务间的双向 TLS 和终端用户的身份认证。 +2. 证书管理:管理 Istio 的证书。 +3. 授权:展示如何控制到 Istio 服务的访问。 + +## 答案 + +1,2,3 + +## 选项 + +### A + +1,3 + +### B + +2,3 + +### C + +1,2 diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/5.istio\345\217\257\350\247\202\345\257\237\346\200\247/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/5.istio\345\217\257\350\247\202\345\257\237\346\200\247/config.json" new file mode 100644 index 0000000000000000000000000000000000000000..3cddc77232921476b2ce96a95ad3cd2ecbb06f67 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/5.istio\345\217\257\350\247\202\345\257\237\346\200\247/config.json" @@ -0,0 +1,10 @@ +{ + "node_id": "cloud_native-7303d1d645de4693b303d04c962e1167", + "keywords": [], + "children": [], + "export": [ + "observer.json" + ], + "keywords_must": [], + "keywords_forbid": [] +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/5.istio\345\217\257\350\247\202\345\257\237\346\200\247/observer.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/5.istio\345\217\257\350\247\202\345\257\237\346\200\247/observer.json" new file mode 100644 index 0000000000000000000000000000000000000000..e403305ee7f4cdba0796fb0e470c3788d1a8cd6b --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/5.istio\345\217\257\350\247\202\345\257\237\346\200\247/observer.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": "huanhuilong", + "source": "observer.md", + "notebook_enable": false, + "exercise_id": "0c6785355ca6479f9130878e9f7a4eca" +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/5.istio\345\217\257\350\247\202\345\257\237\346\200\247/observer.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/5.istio\345\217\257\350\247\202\345\257\237\346\200\247/observer.md" new file mode 100644 index 0000000000000000000000000000000000000000..8fbd01256fa57f5a853195c0dfda83b0d3bd3ab0 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/5.istio\345\217\257\350\247\202\345\257\237\346\200\247/observer.md" @@ -0,0 +1,29 @@ +# istio 可观察性 + +下面是一组可观察性的操作任务 + +* [指标度量(metrics)](https://istio.io/latest/zh/docs/tasks/observability/metrics/):演示 Istio 网格指标度量的配置、收集和处理。 +* [日志(logs)](https://istio.io/latest/zh/docs/tasks/observability/logs/):演示 Istio 网格日志的配置、收集和处理。 +* [分布式追踪(distributed-tracing)](https://istio.io/latest/zh/docs/tasks/observability/distributed-tracing/):该任务展示了如何为启用了 Istio 支持的应用进行追踪。 +* [网络可视化(kiali)](https://istio.io/latest/zh/docs/tasks/observability/kiali/):此任务向您展示如何在 Istio 网格中可视化服务。 +* [gateways](https://istio.io/latest/zh/docs/tasks/observability/gateways/):此任务向您展示如何配置从外部访问 Istio gateways。 + +以下说法错误的是? + +## 答案 + +istio 可以直接对应用作持续集成 + +## 选项 + +### A + +istio 可以通过分布式链路最终定位问题 + +### B + +istio 可以使用 kiali 对网格进行可视化 + +### C + +istio 可以对服务网格做统一日志配置、收集和处理 \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/config.json" similarity index 100% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/4.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/config.json" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\234\215\345\212\241\347\275\221\346\240\274(istio)/config.json" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\346\214\201\347\273\255\351\233\206\346\210\220\345\222\214\351\203\250\347\275\262(Jenkins)/1.\344\275\277\347\224\250helm\345\256\211\350\243\205Jenkins/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\346\214\201\347\273\255\351\233\206\346\210\220\345\222\214\351\203\250\347\275\262(Jenkins)/1.\344\275\277\347\224\250helm\345\256\211\350\243\205Jenkins/config.json" new file mode 100644 index 0000000000000000000000000000000000000000..924e05c504f53ddcf0fe8fc4cd9c53c165adbf97 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\346\214\201\347\273\255\351\233\206\346\210\220\345\222\214\351\203\250\347\275\262(Jenkins)/1.\344\275\277\347\224\250helm\345\256\211\350\243\205Jenkins/config.json" @@ -0,0 +1,10 @@ +{ + "node_id": "cloud_native-a91605664c3f4cb69475c789c616e4a3", + "keywords": [], + "children": [], + "export": [ + "install.json" + ], + "keywords_must": [], + "keywords_forbid": [] +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\346\214\201\347\273\255\351\233\206\346\210\220\345\222\214\351\203\250\347\275\262(Jenkins)/1.\344\275\277\347\224\250helm\345\256\211\350\243\205Jenkins/install.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\346\214\201\347\273\255\351\233\206\346\210\220\345\222\214\351\203\250\347\275\262(Jenkins)/1.\344\275\277\347\224\250helm\345\256\211\350\243\205Jenkins/install.json" new file mode 100644 index 0000000000000000000000000000000000000000..d5a5b37c160670b87ce64e7c88cdca979ad610c5 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\346\214\201\347\273\255\351\233\206\346\210\220\345\222\214\351\203\250\347\275\262(Jenkins)/1.\344\275\277\347\224\250helm\345\256\211\350\243\205Jenkins/install.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": "huanhuilong", + "source": "install.md", + "notebook_enable": false, + "exercise_id": "47cb2bb48380486e9bdfb5f326215730" +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\346\214\201\347\273\255\351\233\206\346\210\220\345\222\214\351\203\250\347\275\262(Jenkins)/1.\344\275\277\347\224\250helm\345\256\211\350\243\205Jenkins/install.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\346\214\201\347\273\255\351\233\206\346\210\220\345\222\214\351\203\250\347\275\262(Jenkins)/1.\344\275\277\347\224\250helm\345\256\211\350\243\205Jenkins/install.md" new file mode 100644 index 0000000000000000000000000000000000000000..6ac6c36a4aaadb2b4d665cdde90c8158a17c0af7 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\346\214\201\347\273\255\351\233\206\346\210\220\345\222\214\351\203\250\347\275\262(Jenkins)/1.\344\275\277\347\224\250helm\345\256\211\350\243\205Jenkins/install.md" @@ -0,0 +1,47 @@ +# 使用 helm 安装 Jenkins 到k8s集群,配置CI/CD + +首先,添加 repo: + +```bash +helm repo add jenkins https://charts.jenkins.io +``` + +其次,创建一个 k8s 名称空间: + +```bash +kubectl create ns jenkins +``` + +接着,安装 jenkins: +```bash +helm install jenkins jenkins/jenkins -n jenkins +``` + +最后,查看登陆地址 + +```bash +export SERVICE_IP=$(kubectl get svc --namespace default jenkins --template '{{ range (index .status.loadBalancer.ingress 0) }}{{ .}}{{ end }}') && echo http://$SERVICE_IP:8080/login +``` + +以下说法错误的是? + +## 答案 + +部署 jenkins 到k8s后,无法找到jenkins的登陆地址 + +## 选项 + +### A + +可以使用 helm 快速安装 jenkins 到k8s,通过 helm 部署应用到k8s平台有非常强的一致性和便利性 + +### B + +在k8s 内部署jenkins,使得其自动获得了高可用 + +### C + +jenkins 可以部署在 k8s 内,也可以部署在k8s 外 + + + diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\346\214\201\347\273\255\351\233\206\346\210\220\345\222\214\351\203\250\347\275\262(Jenkins)/2.k8s\346\214\201\347\273\255\351\233\206\346\210\220(CI,CD)/cicd.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\346\214\201\347\273\255\351\233\206\346\210\220\345\222\214\351\203\250\347\275\262(Jenkins)/2.k8s\346\214\201\347\273\255\351\233\206\346\210\220(CI,CD)/cicd.json" new file mode 100644 index 0000000000000000000000000000000000000000..6e51ebab55c0af884fd021ae7debf608192e8e9a --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\346\214\201\347\273\255\351\233\206\346\210\220\345\222\214\351\203\250\347\275\262(Jenkins)/2.k8s\346\214\201\347\273\255\351\233\206\346\210\220(CI,CD)/cicd.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": "huanhuilong", + "source": "cicd.md", + "notebook_enable": false, + "exercise_id": "95519091400041caa21b29be17ff6dc6" +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\346\214\201\347\273\255\351\233\206\346\210\220\345\222\214\351\203\250\347\275\262(Jenkins)/2.k8s\346\214\201\347\273\255\351\233\206\346\210\220(CI,CD)/cicd.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\346\214\201\347\273\255\351\233\206\346\210\220\345\222\214\351\203\250\347\275\262(Jenkins)/2.k8s\346\214\201\347\273\255\351\233\206\346\210\220(CI,CD)/cicd.md" new file mode 100644 index 0000000000000000000000000000000000000000..1d8c26e5bad6b5e9e84badf10ea37926ffa49090 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\346\214\201\347\273\255\351\233\206\346\210\220\345\222\214\351\203\250\347\275\262(Jenkins)/2.k8s\346\214\201\347\273\255\351\233\206\346\210\220(CI,CD)/cicd.md" @@ -0,0 +1,37 @@ +# CI/CD + +一旦登陆 jenkins ,可以配置一系列 CI/CD动作: + +* CI + * 拉取代码 + * 构建/测试/打包 + * 构建容器镜像 +* CD + * 推送容器镜像到镜像中心 + * 执行k8s命令,拉取镜像 + * 执行k8s命令,部署 + * 执行k8s命令,滚动更新 + +以下说法错误的是? + + +## 答案 +CD 指的是 k8s 会构建一个唱片 + +## 选项 + +### A + +通过 k8s 命令,可以方便地将应用镜像部署到集群里的服务网格,实现滚动更新,完成CD环节 + +### B + +持续集成负责自动从源代码版本仓库拉取代码,自动构建 + +### C + +CI和CD是两个不同的阶段 + + + + diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\346\214\201\347\273\255\351\233\206\346\210\220\345\222\214\351\203\250\347\275\262(Jenkins)/2.k8s\346\214\201\347\273\255\351\233\206\346\210\220(CI,CD)/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\346\214\201\347\273\255\351\233\206\346\210\220\345\222\214\351\203\250\347\275\262(Jenkins)/2.k8s\346\214\201\347\273\255\351\233\206\346\210\220(CI,CD)/config.json" new file mode 100644 index 0000000000000000000000000000000000000000..81e99b3cb9a5ff3aa172440d377dfb1cc663ac7a --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\346\214\201\347\273\255\351\233\206\346\210\220\345\222\214\351\203\250\347\275\262(Jenkins)/2.k8s\346\214\201\347\273\255\351\233\206\346\210\220(CI,CD)/config.json" @@ -0,0 +1,10 @@ +{ + "node_id": "cloud_native-8cb2691d48544d4c81422d89485e48d1", + "keywords": [], + "children": [], + "export": [ + "cicd.json" + ], + "keywords_must": [], + "keywords_forbid": [] +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\214\201\347\273\255\351\233\206\346\210\220\345\222\214\351\203\250\347\275\262(Jenkins)/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\346\214\201\347\273\255\351\233\206\346\210\220\345\222\214\351\203\250\347\275\262(Jenkins)/config.json" similarity index 100% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/5.\346\214\201\347\273\255\351\233\206\346\210\220\345\222\214\351\203\250\347\275\262(Jenkins)/config.json" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\346\214\201\347\273\255\351\233\206\346\210\220\345\222\214\351\203\250\347\275\262(Jenkins)/config.json" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/1.\344\273\213\347\273\215Terraform/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/1.\344\273\213\347\273\215Terraform/config.json" similarity index 100% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/1.\344\273\213\347\273\215Terraform/config.json" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/1.\344\273\213\347\273\215Terraform/config.json" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/1.\344\273\213\347\273\215Terraform/introduce.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/1.\344\273\213\347\273\215Terraform/introduce.json" similarity index 82% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/1.\344\273\213\347\273\215Terraform/introduce.json" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/1.\344\273\213\347\273\215Terraform/introduce.json" index 0963829ad10aa87f1d88000eb8dca34ea34b1bb0..b78b7d5df98b4c2024677e3401a245362d054452 100644 --- "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/1.\344\273\213\347\273\215Terraform/introduce.json" +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/1.\344\273\213\347\273\215Terraform/introduce.json" @@ -1,6 +1,6 @@ { "type": "code_options", - "author": null, + "author": "huanhuilong", "source": "introduce.md", "notebook_enable": false, "exercise_id": "f8534f83cea54f39bafb2720eb84a9b0" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/1.\344\273\213\347\273\215Terraform/introduce.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/1.\344\273\213\347\273\215Terraform/introduce.md" similarity index 100% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/1.\344\273\213\347\273\215Terraform/introduce.md" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/1.\344\273\213\347\273\215Terraform/introduce.md" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/config.json" similarity index 100% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/config.json" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/config.json" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/apply_a.png" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/apply_a.png" similarity index 100% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/apply_a.png" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/apply_a.png" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/apply_q.png" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/apply_q.png" similarity index 100% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/apply_q.png" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/apply_q.png" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/commands.png" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/commands.png" similarity index 100% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/commands.png" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/commands.png" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/download.png" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/download.png" similarity index 100% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/download.png" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/download.png" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/init.png" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/init.png" similarity index 100% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/init.png" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/init.png" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/install.png" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/install.png" similarity index 100% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/install.png" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/install.png" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/plan.png" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/plan.png" similarity index 100% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/plan.png" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/plan.png" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/plan_success.png" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/plan_success.png" similarity index 100% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/plan_success.png" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/img/plan_success.png" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/install.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/install.json" similarity index 82% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/install.json" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/install.json" index d751502e6d18db8700895aeeb7a6cda403fdfee1..7ecdedc1272fb184353dd839b340ecc89c69dcd5 100644 --- "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/install.json" +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/install.json" @@ -1,6 +1,6 @@ { "type": "code_options", - "author": null, + "author": "huanhuilong", "source": "install.md", "notebook_enable": false, "exercise_id": "7ab9d5025ef04a6c96e3a7ff3d5840a6" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/install.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/install.md" similarity index 100% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/install.md" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/2.Terraform\345\221\275\344\273\244\350\241\214\345\267\245\345\205\267/install.md" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/config.json" similarity index 100% rename from "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/6.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/config.json" rename to "data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/7.\345\237\272\347\241\200\346\236\266\346\236\204\350\207\252\345\212\250\347\274\226\346\216\222(Terraform)/config.json" diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/1.\344\272\221\345\216\237\347\224\237\347\232\204\345\210\206\345\261\202/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/1.\344\272\221\345\216\237\347\224\237\347\232\204\345\210\206\345\261\202/config.json" new file mode 100644 index 0000000000000000000000000000000000000000..80967afcd4dc15e3812affc4b6957d7a5fd43454 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/1.\344\272\221\345\216\237\347\224\237\347\232\204\345\210\206\345\261\202/config.json" @@ -0,0 +1,10 @@ +{ + "node_id": "cloud_native-11a547517d4f412e9639ca61dcd6eaf7", + "keywords": [], + "children": [], + "export": [ + "layer.json" + ], + "keywords_must": [], + "keywords_forbid": [] +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/1.\344\272\221\345\216\237\347\224\237\347\232\204\345\210\206\345\261\202/layer.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/1.\344\272\221\345\216\237\347\224\237\347\232\204\345\210\206\345\261\202/layer.json" new file mode 100644 index 0000000000000000000000000000000000000000..a98b93043df9d698bb62a1cd9e92fb655af043b3 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/1.\344\272\221\345\216\237\347\224\237\347\232\204\345\210\206\345\261\202/layer.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": "huanhuilong", + "source": "layer.md", + "notebook_enable": false, + "exercise_id": "277be44763cb4c38b41c1eb887506546" +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/1.\344\272\221\345\216\237\347\224\237\347\232\204\345\210\206\345\261\202/layer.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/1.\344\272\221\345\216\237\347\224\237\347\232\204\345\210\206\345\261\202/layer.md" new file mode 100644 index 0000000000000000000000000000000000000000..da042038f34ba25fb0d540c63904a8b0c2cdbcad --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/1.\344\272\221\345\216\237\347\224\237\347\232\204\345\210\206\345\261\202/layer.md" @@ -0,0 +1,30 @@ +# 云原生的分层 + +下述说法正确的有哪些? + +1. 容器(`docker`) 是云原生的核心基础组件,在云原生平台上,一切软件都被容器化 +2. `k8s` 提供了对容器的分布式编排和调度,从而完成了对一切被容器化的软件的分布式编排和调度 +3. 除了 k8s 原始的 kubectl 命令,`helm` 提供了更便利的 k8s 集群的包管理 +4. 例如,使用 helm 可以在 k8s 集群上安装 `mysql`, 安装`python 服务程序` +5. 当然,使用 helm 也可以在 k8s 集群上安装服务网格(`ServiceMesh`)的事实标准`istio`套装 +6. `istio` 提供了k8s之上的服务网格全功能代理,将分布式系统构架里的流量管理、安全控制、可观察性下层到云原生基础设施 +7. 继续,使用 helm 可以在k8s内直接部署CI/CD软件,例如Jenkins,直接提供了高可用的CI/CD,完成应用程序的自动拉取,测试、打包和镜像构建上传,以及k8s集群里的滚动更新。 +8. 最后,跨云上的k8s基础设施配置,可以通过 Terraform 完成标准化、可移植的管理 + +## 答案 + +1,2,3,4,5,6,7,8 + +## 选项 + +### A + +1,2,3,4 + +### B + +5,6,7,8 + +### C + +3,4,5,6,7 \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/2.\344\272\221\345\216\237\347\224\237\347\232\204\345\221\275\344\273\244/commands.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/2.\344\272\221\345\216\237\347\224\237\347\232\204\345\221\275\344\273\244/commands.json" new file mode 100644 index 0000000000000000000000000000000000000000..a48e9d9d32df2ae101132e8c47970458fb31b325 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/2.\344\272\221\345\216\237\347\224\237\347\232\204\345\221\275\344\273\244/commands.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": "huanhuilong", + "source": "commands.md", + "notebook_enable": false, + "exercise_id": "d49178417d104cb69de5aae5b0e3c428" +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/2.\344\272\221\345\216\237\347\224\237\347\232\204\345\221\275\344\273\244/commands.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/2.\344\272\221\345\216\237\347\224\237\347\232\204\345\221\275\344\273\244/commands.md" new file mode 100644 index 0000000000000000000000000000000000000000..033429b33ed63080031abcbfe2ea185f1e5521cc --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/2.\344\272\221\345\216\237\347\224\237\347\232\204\345\221\275\344\273\244/commands.md" @@ -0,0 +1,30 @@ +# 云原生的命令 + +下面对云原生的一系列命令说法正确的有哪些? + +1. `docker` 包含了对 image 构建的一组子命令,和对 container 运行管理的一组子命令 +2. `kubectl` 是 k8s 的客户端控制命令,包含了对 k8s 集群内的 namespace/node/pod/deployment/service 等资源等操作子命令 +3. `minikube`和`kind`都可以便利地创建学习环境下的k8s集群 +4. 生产环境下`kubeadm`是用来创建k8s集群的命令 +5. `helm`是k8s的包管理命令 +6. `istioctl`是服务网格基础设施istio的客户端控制命令 +7. `terraform`是标准化的、可移植的跨云基础设施管理和构建命令 + +## 答案 + +1,2,3,4,5,6,7 + +## 选项 + +### A + +1,2,3,4,5,6 + + +### B + +2,3,4,5,6,7 + +### C + +1,3,4,5,6,7,8 \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/2.\344\272\221\345\216\237\347\224\237\347\232\204\345\221\275\344\273\244/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/2.\344\272\221\345\216\237\347\224\237\347\232\204\345\221\275\344\273\244/config.json" new file mode 100644 index 0000000000000000000000000000000000000000..6255fc1d62651dcdabeec9741e91733437252d57 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/2.\344\272\221\345\216\237\347\224\237\347\232\204\345\221\275\344\273\244/config.json" @@ -0,0 +1,10 @@ +{ + "node_id": "cloud_native-34b5d17c4bb347ee896a35b06d18f7b4", + "keywords": [], + "children": [], + "export": [ + "commands.json" + ], + "keywords_must": [], + "keywords_forbid": [] +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/3.\344\272\221\345\216\237\347\224\237\344\270\213\347\232\204\347\274\226\347\250\213/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/3.\344\272\221\345\216\237\347\224\237\344\270\213\347\232\204\347\274\226\347\250\213/config.json" new file mode 100644 index 0000000000000000000000000000000000000000..5075fe02998667207aed8a8835e30e2a594d108b --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/3.\344\272\221\345\216\237\347\224\237\344\270\213\347\232\204\347\274\226\347\250\213/config.json" @@ -0,0 +1,10 @@ +{ + "node_id": "cloud_native-869b95155c8f4c5a9d969f364d8f75b0", + "keywords": [], + "children": [], + "export": [ + "program.json" + ], + "keywords_must": [], + "keywords_forbid": [] +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/3.\344\272\221\345\216\237\347\224\237\344\270\213\347\232\204\347\274\226\347\250\213/program.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/3.\344\272\221\345\216\237\347\224\237\344\270\213\347\232\204\347\274\226\347\250\213/program.json" new file mode 100644 index 0000000000000000000000000000000000000000..83256599344f912d8fa5d671cb64211ceea549da --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/3.\344\272\221\345\216\237\347\224\237\344\270\213\347\232\204\347\274\226\347\250\213/program.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": "huanhuilong", + "source": "program.md", + "notebook_enable": false, + "exercise_id": "095219f35eaf480c923bb0e4523557ea" +} \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/3.\344\272\221\345\216\237\347\224\237\344\270\213\347\232\204\347\274\226\347\250\213/program.md" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/3.\344\272\221\345\216\237\347\224\237\344\270\213\347\232\204\347\274\226\347\250\213/program.md" new file mode 100644 index 0000000000000000000000000000000000000000..43c148c25f1ac4ba8d4f4a752838899cd2fb8f68 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/3.\344\272\221\345\216\237\347\224\237\344\270\213\347\232\204\347\274\226\347\250\213/program.md" @@ -0,0 +1,28 @@ +# 云原生下的编程 + +以下对云原生下的编程说法正确的有哪些? + +1. 云原生下的编程,核心是将应用程序打包成容器镜像 +2. 云原生下的编程,容器镜像可以被部署到 k8s 的node里的pod上运行 +3. 云原生下的编程,天生上是分布式的程序 +4. 云原生下的编程,传统分布式服务构架的很多开发工作都已经被下层到k8s或者服务网格基础设施层 +5. 云原生下的编程,有大量的对 yaml 做声明式配置的工作 +6. 云原生下的编程,CI/CD是常见的做法,并且具有高可用 + +## 答案 + +1,2,3,4,5,6 + +## 选项 + +### A + +1,4,5,6 + +### B + +2,3,4,5,6 + +### C + +1,2,3,4,5 \ No newline at end of file diff --git "a/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/config.json" "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/config.json" new file mode 100644 index 0000000000000000000000000000000000000000..9d78066a4f7daf428f8122b1818821a5fb270b73 --- /dev/null +++ "b/data/1.\344\272\221\345\216\237\347\224\237\345\210\235\351\230\266/8.\344\272\221\345\216\237\347\224\237\347\216\257\345\242\203\345\260\217\347\273\223/config.json" @@ -0,0 +1,6 @@ +{ + "node_id": "cloud_native-2d51bd6d2b7344fba58243b2cc81d8cb", + "keywords": [], + "keywords_must": [], + "keywords_forbid": [] +} \ No newline at end of file diff --git a/data/tree.json b/data/tree.json index afb71054e5cfc657d3802b2fd6ea336b20271104..ae8151bb001b5785b6a121513090a80734206d4f 100644 --- a/data/tree.json +++ b/data/tree.json @@ -155,6 +155,52 @@ "keywords_forbid": [] } }, + { + "k8s包管理(helm)": { + "node_id": "cloud_native-d0ad36090d874dc0bd72503ea16c0ad5", + "keywords": [], + "children": [ + { + "安装helm": { + "node_id": "cloud_native-d803deb6ed5043f2925cb47b555ea9bc", + "keywords": [], + "children": [], + "keywords_must": [], + "keywords_forbid": [] + } + }, + { + "helm三大概念": { + "node_id": "cloud_native-ef938d686b4045f2a2da9e6b57500851", + "keywords": [], + "children": [], + "keywords_must": [], + "keywords_forbid": [] + } + }, + { + "使用helm安装mysql到k8s": { + "node_id": "cloud_native-e25cf855bd204baa82d43aeda5509431", + "keywords": [], + "children": [], + "keywords_must": [], + "keywords_forbid": [] + } + }, + { + "使用helm部署Python应用": { + "node_id": "cloud_native-89d35bea670a42a3aa7c135154ba16f1", + "keywords": [], + "children": [], + "keywords_must": [], + "keywords_forbid": [] + } + } + ], + "keywords_must": [], + "keywords_forbid": [] + } + }, { "服务网格(istio)": { "node_id": "cloud_native-4ebf1370e7124635a812ccc4bd5cdc21", @@ -179,13 +225,31 @@ } }, { - "使用istio监控服务": { + "istio流量管理": { "node_id": "cloud_native-80dec61abcca4348a6fdc9b9b727b486", "keywords": [], "children": [], "keywords_must": [], "keywords_forbid": [] } + }, + { + "istio安全": { + "node_id": "cloud_native-029c7b191f8347d69d807d04fd315ced", + "keywords": [], + "children": [], + "keywords_must": [], + "keywords_forbid": [] + } + }, + { + "istio可观察性": { + "node_id": "cloud_native-7303d1d645de4693b303d04c962e1167", + "keywords": [], + "children": [], + "keywords_must": [], + "keywords_forbid": [] + } } ], "keywords_must": [], @@ -196,7 +260,26 @@ "持续集成和部署(Jenkins)": { "node_id": "cloud_native-1c1ab3786e8a42668c7b5b79f6fc81a4", "keywords": [], - "children": [], + "children": [ + { + "使用helm安装Jenkins": { + "node_id": "cloud_native-a91605664c3f4cb69475c789c616e4a3", + "keywords": [], + "children": [], + "keywords_must": [], + "keywords_forbid": [] + } + }, + { + "k8s持续集成(CI,CD)": { + "node_id": "cloud_native-8cb2691d48544d4c81422d89485e48d1", + "keywords": [], + "children": [], + "keywords_must": [], + "keywords_forbid": [] + } + } + ], "keywords_must": [], "keywords_forbid": [] } @@ -228,6 +311,43 @@ "keywords_must": [], "keywords_forbid": [] } + }, + { + "云原生环境小结": { + "node_id": "cloud_native-2d51bd6d2b7344fba58243b2cc81d8cb", + "keywords": [], + "children": [ + { + "云原生的分层": { + "node_id": "cloud_native-11a547517d4f412e9639ca61dcd6eaf7", + "keywords": [], + "children": [], + "keywords_must": [], + "keywords_forbid": [] + } + }, + { + "云原生的命令": { + "node_id": "cloud_native-34b5d17c4bb347ee896a35b06d18f7b4", + "keywords": [], + "children": [], + "keywords_must": [], + "keywords_forbid": [] + } + }, + { + "云原生下的编程": { + "node_id": "cloud_native-869b95155c8f4c5a9d969f364d8f75b0", + "keywords": [], + "children": [], + "keywords_must": [], + "keywords_forbid": [] + } + } + ], + "keywords_must": [], + "keywords_forbid": [] + } } ], "keywords_must": [],