define cloud native app

pull/404/head
Jimmy song 2020-06-19 14:25:28 +08:00
parent b505f69c2c
commit 8f573d53a8
10 changed files with 386 additions and 141 deletions

View File

@ -10,55 +10,61 @@
* [云原生的设计哲学](cloud-native/cloud-native-philosophy.md)
* [Play with Kubernetes](cloud-native/play-with-kubernetes.md)
* [快速部署一个云原生本地实验环境](cloud-native/cloud-native-local-quick-start.md)
* [使用Rancher在阿里云上部署Kubenretes集群](cloud-native/setup-kubernetes-with-rancher-and-aliyun.md)
* [Kubernetes与云原生应用概览](cloud-native/kubernetes-and-cloud-native-app-overview.md)
* [云原生应用之路——从Kubernetes到Cloud Native](cloud-native/from-kubernetes-to-cloud-native.md)
* [使用 Rancher 在阿里云上部署 Kubenretes 集群](cloud-native/setup-kubernetes-with-rancher-and-aliyun.md)
* [Kubernetes 与云原生应用概览](cloud-native/kubernetes-and-cloud-native-app-overview.md)
* [云原生应用之路 —— Kubernetes Cloud Native](cloud-native/from-kubernetes-to-cloud-native.md)
* [云原生编程语言](cloud-native/cloud-native-programming-languages.md)
* [云原生编程语言Ballerina](cloud-native/cloud-native-programming-language-ballerina.md)
* [云原生编程语言Pulumi](cloud-native/cloud-native-programming-language-pulumi.md)
* [云原生编程语言 Ballerina](cloud-native/cloud-native-programming-language-ballerina.md)
* [云原生编程语言 Pulumi](cloud-native/cloud-native-programming-language-pulumi.md)
* [云原生的未来](cloud-native/the-future-of-cloud-native.md)
* [定义云原生应用](cloud-native/define-cloud-native-app.md)
* [Workload](cloud-native/workload.md)
* [Component](cloud-native/component.md)
* [Trait](cloud-native/trait.md)
* [Application Scope](cloud-native/application-scope.md)
* [Application Configuration](cloud-native/application-configuration.md)
## 概念与原理
* [Kubernetes架构](concepts/index.md)
* [Kubernetes 架构](concepts/index.md)
* [设计理念](concepts/concepts.md)
* [Etcd解析](concepts/etcd.md)
* [Etcd 解析](concepts/etcd.md)
* [开放接口](concepts/open-interfaces.md)
* [CRI - Container Runtime Interface容器运行时接口](concepts/cri.md)
* [CNI - Container Network Interface容器网络接口](concepts/cni.md)
* [CSI - Container Storage Interface容器存储接口](concepts/csi.md)
* [Kubernetes中的网络](concepts/networking.md)
* [Kubernetes中的网络解析——以flannel为例](concepts/flannel.md)
* [Kubernetes中的网络解析——以calico为例](concepts/calico.md)
* [具备API感知的网络和安全性管理开源软件Cilium](concepts/cilium.md)
* [Cilium架构设计与概念解析](concepts/cilium-concepts.md)
* [Kubernetes 中的网络](concepts/networking.md)
* [Kubernetes 中的网络解析 —— flannel 为例](concepts/flannel.md)
* [Kubernetes 中的网络解析 —— calico 为例](concepts/calico.md)
* [具备 API 感知的网络和安全性管理开源软件 Cilium](concepts/cilium.md)
* [Cilium 架构设计与概念解析](concepts/cilium-concepts.md)
* [资源对象与基本概念解析](concepts/objects.md)
* [Pod状态与生命周期管理](concepts/pod-state-and-lifecycle.md)
* [Pod概览](concepts/pod-overview.md)
* [Pod解析](concepts/pod.md)
* [Init容器](concepts/init-containers.md)
* [Pause容器](concepts/pause-container.md)
* [Pod安全策略](concepts/pod-security-policy.md)
* [Pod的生命周期](concepts/pod-lifecycle.md)
* [Pod 状态与生命周期管理](concepts/pod-state-and-lifecycle.md)
* [Pod 概览](concepts/pod-overview.md)
* [Pod 解析](concepts/pod.md)
* [Init 容器](concepts/init-containers.md)
* [Pause 容器](concepts/pause-container.md)
* [Pod 安全策略](concepts/pod-security-policy.md)
* [Pod 的生命周期](concepts/pod-lifecycle.md)
* [Pod Hook](concepts/pod-hook.md)
* [Pod Preset](concepts/pod-preset.md)
* [Pod中断与PDBPod中断预算](concepts/pod-disruption-budget.md)
* [Pod 中断与 PDBPod 中断预算)](concepts/pod-disruption-budget.md)
* [集群资源管理](concepts/cluster.md)
* [Node](concepts/node.md)
* [Namespace](concepts/namespace.md)
* [Label](concepts/label.md)
* [Annotation](concepts/annotation.md)
* [Taint和Toleration污点和容忍](concepts/taint-and-toleration.md)
* [Taint Toleration污点和容忍](concepts/taint-and-toleration.md)
* [垃圾收集](concepts/garbage-collection.md)
* [控制器](concepts/controllers.md)
* [Deployment](concepts/deployment.md)
* [StatefulSet](concepts/statefulset.md)
* [DaemonSet](concepts/daemonset.md)
* [ReplicationController和ReplicaSet](concepts/replicaset.md)
* [ReplicationController ReplicaSet](concepts/replicaset.md)
* [Job](concepts/job.md)
* [CronJob](concepts/cronjob.md)
* [Horizontal Pod Autoscaling](concepts/horizontal-pod-autoscaling.md)
* [自定义指标HPA](concepts/custom-metrics-hpa.md)
* [自定义指标 HPA](concepts/custom-metrics-hpa.md)
* [准入控制器Admission Controller](concepts/admission-controller.md)
* [服务发现](concepts/service-discovery.md)
* [Service](concepts/service.md)
@ -66,19 +72,19 @@
* [Traefik Ingress Controller](concepts/traefik-ingress-controller.md)
* [身份与权限控制](concepts/authentication-and-permission.md)
* [ServiceAccount](concepts/serviceaccount.md)
* [RBAC——基于角色的访问控制](concepts/rbac.md)
* [RBAC—— 基于角色的访问控制](concepts/rbac.md)
* [NetworkPolicy](concepts/network-policy.md)
* [存储](concepts/storage.md)
* [Secret](concepts/secret.md)
* [ConfigMap](concepts/configmap.md)
* [ConfigMap的热更新](concepts/configmap-hot-update.md)
* [ConfigMap 的热更新](concepts/configmap-hot-update.md)
* [Volume](concepts/volume.md)
* [Persistent Volume持久化卷](concepts/persistent-volume.md)
* [Storage Class](concepts/storageclass.md)
* [本地持久化存储](concepts/local-persistent-storage.md)
* [集群扩展](concepts/extension.md)
* [使用自定义资源扩展API](concepts/custom-resource.md)
* [使用CRD扩展Kubernetes API](concepts/crd.md)
* [使用自定义资源扩展 API](concepts/custom-resource.md)
* [使用 CRD 扩展 Kubernetes API](concepts/crd.md)
* [Aggregated API Server](concepts/aggregated-api-server.md)
* [APIService](concepts/apiservice.md)
* [Service Catalog](concepts/service-catalog.md)
@ -89,66 +95,66 @@
* [用户指南](guide/index.md)
* [资源对象配置](guide/resource-configuration.md)
* [配置Pod的liveness和readiness探针](guide/configure-liveness-readiness-probes.md)
* [配置Pod的Service Account](guide/configure-pod-service-account.md)
* [Secret配置](guide/secret-configuration.md)
* [管理namespace中的资源配额](guide/resource-quota-management.md)
* [配置 Pod liveness readiness 探针](guide/configure-liveness-readiness-probes.md)
* [配置 Pod Service Account](guide/configure-pod-service-account.md)
* [Secret 配置](guide/secret-configuration.md)
* [管理 namespace 中的资源配额](guide/resource-quota-management.md)
* [命令使用](guide/command-usage.md)
* [Docker用户过渡到kubectl命令行指南](guide/docker-cli-to-kubectl.md)
* [kubectl命令概览](guide/using-kubectl.md)
* [kubectl命令技巧大全](guide/kubectl-cheatsheet.md)
* [使用etcdctl访问kubernetes数据](guide/using-etcdctl-to-access-kubernetes-data.md)
* [Docker 用户过渡到 kubectl 命令行指南](guide/docker-cli-to-kubectl.md)
* [kubectl 命令概览](guide/using-kubectl.md)
* [kubectl 命令技巧大全](guide/kubectl-cheatsheet.md)
* [使用 etcdctl 访问 kubernetes 数据](guide/using-etcdctl-to-access-kubernetes-data.md)
* [集群安全性管理](guide/cluster-security-management.md)
* [管理集群中的TLS](guide/managing-tls-in-a-cluster.md)
* [kubelet的认证授权](guide/kubelet-authentication-authorization.md)
* [管理集群中的 TLS](guide/managing-tls-in-a-cluster.md)
* [kubelet 的认证授权](guide/kubelet-authentication-authorization.md)
* [TLS bootstrap](guide/tls-bootstrapping.md)
* [创建用户认证授权的kubeconfig文件](guide/kubectl-user-authentication-authorization.md)
* [IP伪装代理](guide/ip-masq-agent.md)
* [使用kubeconfig或token进行用户身份认证](guide/auth-with-kubeconfig-or-token.md)
* [Kubernetes中的用户与身份认证授权](guide/authentication.md)
* [Kubernetes集群安全性配置最佳实践](guide/kubernetes-security-best-practice.md)
* [访问Kubernetes集群](guide/access-kubernetes-cluster.md)
* [创建用户认证授权的 kubeconfig 文件](guide/kubectl-user-authentication-authorization.md)
* [IP 伪装代理](guide/ip-masq-agent.md)
* [使用 kubeconfig token 进行用户身份认证](guide/auth-with-kubeconfig-or-token.md)
* [Kubernetes 中的用户与身份认证授权](guide/authentication.md)
* [Kubernetes 集群安全性配置最佳实践](guide/kubernetes-security-best-practice.md)
* [访问 Kubernetes 集群](guide/access-kubernetes-cluster.md)
* [访问集群](guide/access-cluster.md)
* [使用kubeconfig文件配置跨集群认证](guide/authenticate-across-clusters-kubeconfig.md)
* [使用 kubeconfig 文件配置跨集群认证](guide/authenticate-across-clusters-kubeconfig.md)
* [通过端口转发访问集群中的应用程序](guide/connecting-to-applications-port-forward.md)
* [使用service访问群集中的应用程序](guide/service-access-application-cluster.md)
* [从外部访问Kubernetes中的Pod](guide/accessing-kubernetes-pods-from-outside-of-the-cluster.md)
* [Cabin - Kubernetes手机客户端](guide/cabin-mobile-dashboard-for-kubernetes.md)
* [Kubernetic - Kubernetes桌面客户端](guide/kubernetes-desktop-client.md)
* [Kubernator - 更底层的Kubernetes UI](guide/kubernator-kubernetes-ui.md)
* [Kubernetes中开发部署应用](guide/application-development-deployment-flow.md)
* [适用于kubernetes的应用开发部署流程](guide/deploy-applications-in-kubernetes.md)
* [迁移传统应用到Kubernetes中——以Hadoop YARN为例](guide/migrating-hadoop-yarn-to-kubernetes.md)
* [使用StatefulSet部署用状态应用](guide/using-statefulset.md)
* [使用 service 访问群集中的应用程序](guide/service-access-application-cluster.md)
* [从外部访问 Kubernetes 中的 Pod](guide/accessing-kubernetes-pods-from-outside-of-the-cluster.md)
* [Cabin - Kubernetes 手机客户端](guide/cabin-mobile-dashboard-for-kubernetes.md)
* [Kubernetic - Kubernetes 桌面客户端](guide/kubernetes-desktop-client.md)
* [Kubernator - 更底层的 Kubernetes UI](guide/kubernator-kubernetes-ui.md)
* [ Kubernetes 中开发部署应用](guide/application-development-deployment-flow.md)
* [适用于 kubernetes 的应用开发部署流程](guide/deploy-applications-in-kubernetes.md)
* [迁移传统应用到 Kubernetes —— Hadoop YARN 为例](guide/migrating-hadoop-yarn-to-kubernetes.md)
* [使用 StatefulSet 部署用状态应用](guide/using-statefulset.md)
## 最佳实践
* [最佳实践概览](practice/index.md)
* [CentOS上部署Kubernetes集群](practice/install-kubernetes-on-centos.md)
* [创建TLS证书和秘钥](practice/create-tls-and-secret-key.md)
* [创建kubeconfig文件](practice/create-kubeconfig.md)
* [创建高可用etcd集群](practice/etcd-cluster-installation.md)
* [安装kubectl命令行工具](practice/kubectl-installation.md)
* [部署master节点](practice/master-installation.md)
* [安装flannel网络插件](practice/flannel-installation.md)
* [部署node节点](practice/node-installation.md)
* [安装kubedns插件](practice/kubedns-addon-installation.md)
* [安装dashboard插件](practice/dashboard-addon-installation.md)
* [安装heapster插件](practice/heapster-addon-installation.md)
* [安装EFK插件](practice/efk-addon-installation.md)
* [生产级的Kubernetes简化管理工具kubeadm](practice/install-kubernetes-with-kubeadm.md)
* [使用kubeadm在Ubuntu Server 16.04上快速构建测试集群](practice/install-kubernetes-on-ubuntu-server-16.04-with-kubeadm.md)
* [ CentOS 上部署 Kubernetes 集群](practice/install-kubernetes-on-centos.md)
* [创建 TLS 证书和秘钥](practice/create-tls-and-secret-key.md)
* [创建 kubeconfig 文件](practice/create-kubeconfig.md)
* [创建高可用 etcd 集群](practice/etcd-cluster-installation.md)
* [安装 kubectl 命令行工具](practice/kubectl-installation.md)
* [部署 master 节点](practice/master-installation.md)
* [安装 flannel 网络插件](practice/flannel-installation.md)
* [部署 node 节点](practice/node-installation.md)
* [安装 kubedns 插件](practice/kubedns-addon-installation.md)
* [安装 dashboard 插件](practice/dashboard-addon-installation.md)
* [安装 heapster 插件](practice/heapster-addon-installation.md)
* [安装 EFK 插件](practice/efk-addon-installation.md)
* [生产级的 Kubernetes 简化管理工具 kubeadm](practice/install-kubernetes-with-kubeadm.md)
* [使用 kubeadm Ubuntu Server 16.04 上快速构建测试集群](practice/install-kubernetes-on-ubuntu-server-16.04-with-kubeadm.md)
* [服务发现与负载均衡](practice/service-discovery-and-loadbalancing.md)
* [安装Traefik ingress](practice/traefik-ingress-installation.md)
* [安装 Traefik ingress](practice/traefik-ingress-installation.md)
* [分布式负载测试](practice/distributed-load-test.md)
* [网络和集群性能测试](practice/network-and-cluster-perfermance-test.md)
* [边缘节点配置](practice/edge-node-configuration.md)
* [安装Nginx ingress](practice/nginx-ingress-installation.md)
* [安装配置DNS](practice/dns-installation.md)
* [安装配置Kube-dns](practice/configuring-dns.md)
* [安装配置CoreDNS](practice/coredns.md)
* [安装 Nginx ingress](practice/nginx-ingress-installation.md)
* [安装配置 DNS](practice/dns-installation.md)
* [安装配置 Kube-dns](practice/configuring-dns.md)
* [安装配置 CoreDNS](practice/coredns.md)
* [运维管理](practice/operation.md)
* [Master节点高可用](practice/master-ha.md)
* [Master 节点高可用](practice/master-ha.md)
* [服务滚动升级](practice/service-rolling-update.md)
* [应用日志收集](practice/app-log-collection.md)
* [配置最佳实践](practice/configuration-best-practice.md)
@ -158,76 +164,76 @@
* [集群联邦](practice/federation.md)
* [存储管理](practice/storage.md)
* [GlusterFS](practice/glusterfs.md)
* [使用GlusterFS做持久化存储](practice/using-glusterfs-for-persistent-storage.md)
* [使用Heketi作为Kubernetes的持久存储GlusterFS的external provisioner](practice/using-heketi-gluster-for-persistent-storage.md)
* [OpenShift中使用GlusterFS做持久化存储](practice/storage-for-containers-using-glusterfs-with-openshift.md)
* [使用 GlusterFS 做持久化存储](practice/using-glusterfs-for-persistent-storage.md)
* [使用 Heketi 作为 Kubernetes 的持久存储 GlusterFS external provisioner](practice/using-heketi-gluster-for-persistent-storage.md)
* [ OpenShift 中使用 GlusterFS 做持久化存储](practice/storage-for-containers-using-glusterfs-with-openshift.md)
* [GlusterD-2.0](practice/glusterd-2.0.md)
* [Ceph](practice/ceph.md)
* [Helm托管安装Ceph集群并提供后端存储](practice/ceph-helm-install-guide-zh.md)
* [使用Ceph做持久化存储](practice/using-ceph-for-persistent-storage.md)
* [使用rbd-provisioner提供rbd持久化存储](practice/rbd-provisioner.md)
* [ Helm 托管安装 Ceph 集群并提供后端存储](practice/ceph-helm-install-guide-zh.md)
* [使用 Ceph 做持久化存储](practice/using-ceph-for-persistent-storage.md)
* [使用 rbd-provisioner 提供 rbd 持久化存储](practice/rbd-provisioner.md)
* [OpenEBS](practice/openebs.md)
* [使用OpenEBS做持久化存储](practice/using-openebs-for-persistent-storage.md)
* [使用 OpenEBS 做持久化存储](practice/using-openebs-for-persistent-storage.md)
* [Rook](practice/rook.md)
* [NFS](practice/nfs.md)
* [利用NFS动态提供Kubernetes后端存储卷](practice/using-nfs-for-persistent-storage.md)
* [利用 NFS 动态提供 Kubernetes 后端存储卷](practice/using-nfs-for-persistent-storage.md)
* [集群与应用监控](practice/monitoring.md)
* [Heapster](practice//heapster.md)
* [使用Heapster获取集群和对象的metric数据](practice/using-heapster-to-get-object-metrics.md)
* [使用 Heapster 获取集群和对象的 metric 数据](practice/using-heapster-to-get-object-metrics.md)
* [Prometheus](practice/prometheus.md)
* [使用Prometheus监控kubernetes集群](practice/using-prometheus-to-monitor-kuberentes-cluster.md)
* [Prometheus查询语言PromQL使用说明](practice/promql.md)
* [使用Vistio监控Istio服务网格中的流量](practice/vistio-visualize-your-istio-mesh.md)
* [使用 Prometheus 监控 kubernetes 集群](practice/using-prometheus-to-monitor-kuberentes-cluster.md)
* [Prometheus 查询语言 PromQL 使用说明](practice/promql.md)
* [使用 Vistio 监控 Istio 服务网格中的流量](practice/vistio-visualize-your-istio-mesh.md)
* [分布式跟踪](practice/distributed-tracing.md)
* [OpenTracing](practice/opentracing.md)
* [服务编排管理](practice/services-management-tool.md)
* [使用Helm管理Kubernetes应用](practice/helm.md)
* [构建私有Chart仓库](practice/create-private-charts-repo.md)
* [使用 Helm 管理 Kubernetes 应用](practice/helm.md)
* [构建私有 Chart 仓库](practice/create-private-charts-repo.md)
* [持续集成与发布](practice/ci-cd.md)
* [使用Jenkins进行持续集成与发布](practice/jenkins-ci-cd.md)
* [使用Drone进行持续集成与发布](practice/drone-ci-cd.md)
* [使用 Jenkins 进行持续集成与发布](practice/jenkins-ci-cd.md)
* [使用 Drone 进行持续集成与发布](practice/drone-ci-cd.md)
* [更新与升级](practice/update-and-upgrade.md)
* [手动升级Kubernetes集群](practice/manually-upgrade.md)
* [升级dashboard](practice/dashboard-upgrade.md)
* [手动升级 Kubernetes 集群](practice/manually-upgrade.md)
* [升级 dashboard](practice/dashboard-upgrade.md)
## 领域应用
* [领域应用概览](usecases/index.md)
* [微服务架构](usecases/microservices.md)
* [微服务中的服务发现](usecases/service-discovery-in-microservices.md)
* [使用Java构建微服务并发布到Kubernetes平台](usecases/microservices-for-java-developers.md)
* [Spring Boot快速开始指南](usecases/spring-boot-quick-start-guide.md)
* [使用 Java 构建微服务并发布到 Kubernetes 平台](usecases/microservices-for-java-developers.md)
* [Spring Boot 快速开始指南](usecases/spring-boot-quick-start-guide.md)
* [Service Mesh 服务网格](usecases/service-mesh.md)
* [企业级服务网格架构](usecases/the-enterprise-path-to-service-mesh-architectures.md)
* [Service Mesh基础](usecases/service-mesh-fundamental.md)
* [Service Mesh技术对比](usecases/comparing-service-mesh-technologies.md)
* [Service Mesh 基础](usecases/service-mesh-fundamental.md)
* [Service Mesh 技术对比](usecases/comparing-service-mesh-technologies.md)
* [采纳和演进](usecases/service-mesh-adoption-and-evolution.md)
* [定制和集成](usecases/service-mesh-customization-and-integration.md)
* [总结](usecases/service-mesh-conclusion.md)
* [Istio](usecases/istio.md)
* [安装并试用Istio service mesh](usecases/istio-installation.md)
* [Istio中sidecar的注入规范及示例](usecases/sidecar-spec-in-istio.md)
* [如何参与Istio社区及注意事项](usecases/istio-community-tips.md)
* [Istio免费学习资源汇总](usecases/istio-tutorials-collection.md)
* [Sidecar的注入与流量劫持](usecases/understand-sidecar-injection-and-traffic-hijack-in-istio-service-mesh.md)
* [Envoy Sidecar代理的路由转发](usecases/envoy-sidecar-routing-of-istio-service-mesh-deep-dive.md)
* [安装并试用 Istio service mesh](usecases/istio-installation.md)
* [Istio sidecar 的注入规范及示例](usecases/sidecar-spec-in-istio.md)
* [如何参与 Istio 社区及注意事项](usecases/istio-community-tips.md)
* [Istio 免费学习资源汇总](usecases/istio-tutorials-collection.md)
* [Sidecar 的注入与流量劫持](usecases/understand-sidecar-injection-and-traffic-hijack-in-istio-service-mesh.md)
* [Envoy Sidecar 代理的路由转发](usecases/envoy-sidecar-routing-of-istio-service-mesh-deep-dive.md)
* [Linkerd](usecases/linkerd.md)
* [Linkerd 使用指南](usecases/linkerd-user-guide.md)
* [Conduit](usecases/conduit.md)
* [Condiut概览](usecases/conduit-overview.md)
* [安装Conduit](usecases/conduit-installation.md)
* [Condiut 概览](usecases/conduit-overview.md)
* [安装 Conduit](usecases/conduit-installation.md)
* [Envoy](usecases/envoy.md)
* [Envoy的架构与基本术语](usecases/envoy-terminology.md)
* [Envoy作为前端代理](usecases/envoy-front-proxy.md)
* [Envoy mesh教程](usecases/envoy-mesh-in-kubernetes-tutorial.md)
* [Envoy 的架构与基本术语](usecases/envoy-terminology.md)
* [Envoy 作为前端代理](usecases/envoy-front-proxy.md)
* [Envoy mesh 教程](usecases/envoy-mesh-in-kubernetes-tutorial.md)
* [MOSN](usecases/mosn.md)
* [大数据](usecases/big-data.md)
* [Spark standalone on Kubernetes](usecases/spark-standalone-on-kubernetes.md)
* [运行支持Kubernetes原生调度的Spark程序](usecases/running-spark-with-kubernetes-native-scheduler.md)
* [Serverless架构](usecases/serverless.md)
* [理解Serverless](usecases/understanding-serverless.md)
* [运行支持 Kubernetes 原生调度的 Spark 程序](usecases/running-spark-with-kubernetes-native-scheduler.md)
* [Serverless 架构](usecases/serverless.md)
* [理解 Serverless](usecases/understanding-serverless.md)
* [FaaS函数即服务](usecases/faas.md)
* [OpenFaaS快速入门指南](usecases/openfaas-quick-start.md)
* [OpenFaaS 快速入门指南](usecases/openfaas-quick-start.md)
* [Knative](usecases/knative.md)
* [云原生应用标准](usecases/cloud-native-app-standard.md)
* [OAM开放应用模型](usecases/oam.md)
@ -237,11 +243,11 @@
## 开发指南
* [开发指南概览](develop/index.md)
* [SIG和工作组](develop/sigs-and-working-group.md)
* [SIG 和工作组](develop/sigs-and-working-group.md)
* [开发环境搭建](develop/developing-environment.md)
* [本地分布式开发环境搭建(使用Vagrant和Virtualbox](develop/using-vagrant-and-virtualbox-for-development.md)
* [本地分布式开发环境搭建(使用 Vagrant Virtualbox](develop/using-vagrant-and-virtualbox-for-development.md)
* [单元测试和集成测试](develop/testing.md)
* [client-go示例](develop/client-go-sample.md)
* [client-go 示例](develop/client-go-sample.md)
* [Operator](develop/operator.md)
* [operator-sdk](develop/operator-sdk.md)
* [kubebuilder](develop/kubebuilder.md)
@ -253,34 +259,34 @@
## CNCF云原生计算基金会
* [CNCF - 云原生计算基金会简介](cloud-native/cncf.md)
* [CNCF章程](cloud-native/cncf-charter.md)
* [CNCF特别兴趣小组SIG说明](cloud-native/cncf-sig.md)
* [开源项目加入CNCF Sandbox的要求](cloud-native/cncf-sandbox-criteria.md)
* [CNCF中的项目治理](cloud-native/cncf-project-governing.md)
* [CNCF 章程](cloud-native/cncf-charter.md)
* [CNCF 特别兴趣小组SIG说明](cloud-native/cncf-sig.md)
* [开源项目加入 CNCF Sandbox 的要求](cloud-native/cncf-sandbox-criteria.md)
* [CNCF 中的项目治理](cloud-native/cncf-project-governing.md)
* [CNCF Ambassador](cloud-native/cncf-ambassador.md)
## 附录
* [附录说明](appendix/index.md)
* [Kubernetes中的应用故障排查](appendix/debug-kubernetes-services.md)
* [Kubernetes相关资讯和情报链接](appendix/material-share.md)
* [Docker最佳实践](appendix/docker-best-practice.md)
* [Kubernetes 中的应用故障排查](appendix/debug-kubernetes-services.md)
* [Kubernetes 相关资讯和情报链接](appendix/material-share.md)
* [Docker 最佳实践](appendix/docker-best-practice.md)
* [使用技巧](appendix/tricks.md)
* [问题记录](appendix/issues.md)
* [Kubernetes版本更新日志](appendix/kubernetes-changelog.md)
* [Kubernetes1.7更新日志](appendix/kubernetes-1.7-changelog.md)
* [Kubernetes1.8更新日志](appendix/kubernetes-1.8-changelog.md)
* [Kubernetes1.9更新日志](appendix/kubernetes-1.9-changelog.md)
* [Kubernetes1.10更新日志](appendix/kubernetes-1.10-changelog.md)
* [Kubernetes1.11更新日志](appendix/kubernetes-1.11-changelog.md)
* [Kubernetes1.12更新日志](appendix/kubernetes-1.12-changelog.md)
* [Kubernetes1.13更新日志](appendix/kubernetes-1.13-changelog.md)
* [Kubernetes1.14更新日志](appendix/kubernetes-1.14-changelog.md)
* [Kubernetes1.15更新日志](appendix/kubernetes-1.15-changelog.md)
* [Kubernetes及云原生年度总结及展望](appendix/summary-and-outlook.md)
* [Kubernetes与云原生2017年年终总结及2018年展望](appendix/kubernetes-and-cloud-native-summary-in-2017-and-outlook-for-2018.md)
* [Kubernetes与云原生2018年年终总结及2019年展望](appendix/kubernetes-and-cloud-native-summary-in-2018-and-outlook-for-2019.md)
* [CNCF年度报告解读](appendix/cncf-annual-report.md)
* [CNCF 2018年年度报告解读](appendix/cncf-annual-report-2018.md)
* [Kubernetes认证服务提供商KCSP说明](appendix/about-kcsp.md)
* [认证Kubernetes管理员CKA说明](appendix/about-cka-candidate.md)
* [Kubernetes 版本更新日志](appendix/kubernetes-changelog.md)
* [Kubernetes1.7 更新日志](appendix/kubernetes-1.7-changelog.md)
* [Kubernetes1.8 更新日志](appendix/kubernetes-1.8-changelog.md)
* [Kubernetes1.9 更新日志](appendix/kubernetes-1.9-changelog.md)
* [Kubernetes1.10 更新日志](appendix/kubernetes-1.10-changelog.md)
* [Kubernetes1.11 更新日志](appendix/kubernetes-1.11-changelog.md)
* [Kubernetes1.12 更新日志](appendix/kubernetes-1.12-changelog.md)
* [Kubernetes1.13 更新日志](appendix/kubernetes-1.13-changelog.md)
* [Kubernetes1.14 更新日志](appendix/kubernetes-1.14-changelog.md)
* [Kubernetes1.15 更新日志](appendix/kubernetes-1.15-changelog.md)
* [Kubernetes 及云原生年度总结及展望](appendix/summary-and-outlook.md)
* [Kubernetes 与云原生 2017 年年终总结及 2018 年展望](appendix/kubernetes-and-cloud-native-summary-in-2017-and-outlook-for-2018.md)
* [Kubernetes 与云原生 2018 年年终总结及 2019 年展望](appendix/kubernetes-and-cloud-native-summary-in-2018-and-outlook-for-2019.md)
* [CNCF 年度报告解读](appendix/cncf-annual-report.md)
* [CNCF 2018 年年度报告解读](appendix/cncf-annual-report-2018.md)
* [Kubernetes 认证服务提供商KCSP说明](appendix/about-kcsp.md)
* [认证 Kubernetes 管理员CKA说明](appendix/about-cka-candidate.md)

View File

@ -0,0 +1,45 @@
# Application Configuration
本文基于 OAM v1alpha2 版本。
`ApplicationConfiguration``Component``Trait` 组合,定义了一个应用程序的配置,`Component` 每部署一次就会产生一个实例(`Instance`),实例是可以被升级的(包括回滚和重新部署),而每次部署和升级就会产生一次新的发布(`Release`)。
{{% alert title="关于 Release" color="primary" %}}
[12 因素应用](https://12factor.net/zh_cn/)严格区分[构建、发布、运行](https://12factor.net/zh_cn/build-release-run)这三个步骤。每次构建和修改配置后都会产生一次新的发布(`Release`。OAM 中将 `Component`、`Trait`、`ApplicaitonScope` 组合而成的 `ApplicationConfiguration` 即等同于 `Release`。每次对 `ApplciationConfiguration` 的更新都会创建一个新的 `Release`(跟 [Helm](https://helm.sh) 中的 `Release` 概念一致)。
{{% /alert %}}
下面是一个 `ApplicationConfiguration` 示例。
```yaml
apiVersion: core.oam.dev/v1alpha2
kind: ApplicationConfiguration
metadata:
name: my-app
annotations:
version: v1.0.0
description: "My first application deployment."
spec:
components:
- componentName: my-component
parameterValues:
- name: PARAMETER_NAME
value: SUPPLIED_VALUE
- name: ANOTHER_PARAMETER
value: "AnotherValue"
traits:
- name: manualscaler.core.oam.dev
version: v1
spec:
replicaCount: 3
scopes:
- scopeRef:
apiVersion: core.oam.dev/v1alpha2
kind: NetworkScope
name: my-network
```
关于 `ApplicationConfiguration` 的详细信息参考 OAM 中的 [ApplicationConfiguration 规范](https://github.com/oam-dev/spec/blob/master/7.application_configuration.md)。
## 参考
- [The Open Application Model specification - github.com](https://github.com/oam-dev/spec)

View File

@ -0,0 +1,39 @@
本文基于 OAM v1alpha2 版本。
`ApplicationScope` 根据 `Component` 中的应用逻辑或共同行为划定作用域,将其分组以便于管理。
`ApplicationScope` 具有以下特征:
- 一个 `Component` 可能属于一个或多个 `ApplicationScope`
- 有的 `ApplicationScope` 可以限定其中是否可以部署同一个 `Component` 的多个实例;
- `ApplicationScope` 可以作为 `Component` 与基础设施的连接层,提供身份、网络或安全能力;
- `Trait` 可以根据 `Component` 中定义的 `ApplicationScope` 来执行适当的运维特性;
目前 OAM 中支持的核心应用范围类型有 [`NetworkScope`](https://github.com/oam-dev/spec/blob/master/standard/scopes/network_scope.md) 和 [`HealthScope`](https://github.com/oam-dev/spec/blob/master/standard/scopes/health_scope.md)。
下面是使用 `NetworkScope` 来声明作用域的示例:
```yaml
apiVersion: core.oam.dev/v1alpha2
kind: NetworkScope
metadata:
name: my-network
labels:
region: my-region
environment: production
spec:
networkId: my-network
subnetIds:
- my-subnetwork-01
- my-subnetwork-02
- my-subnetwork-03
internetGatewayType: nat
```
上面的示例的作用是将三个子网划定为一组网络边界,这通常是使用 VPC 实现。
关于 `ApplicationScope` 的详细信息请参考 OAM 中的 [ApplicationScope 规范](https://github.com/oam-dev/spec/blob/master/5.application_scopes.md)。
## 参考
- [The Open Application Model specification - github.com](https://github.com/oam-dev/spec)

View File

@ -0,0 +1,43 @@
# Component
本文基于 OAM v1alpha2 版本。
`Component` 用于定义应用程序的基本组件,其中包含了对 Workload 的引用,一个 Component 中只能定义一个 Workload这个 Workload 是与平台无关的,可以直接引用 Kubernetes 中的 CRD。
下面是根据 OAM 规范定义的一个 Component 示例。
```yaml
apiVersion: core.oam.dev/v1alpha2
kind: Component
metadata:
name: my-component
spec:
workload:
apiVersion: core.oam.dev/v1alpha2
kind: ContainerizedWorkload
spec:
os: linux
containers:
- name: server
image: my-image:latest
parameters:
- name: myServerImage
required: true
fieldPaths:
- ".spec.containers[0].image"
```
`Component` 定义由以下几个部分组成:
- `metadata`:关于 Component 的信息,主要是针对应用运维的信息。
- `workload`:该 Component 的实际工作负载。具体有哪些负载类型可用可以咨询平台提供商,平台运维也可以根据 [Workload 规范](https://github.com/oam-dev/spec/blob/master/3.workload.md) 来扩展负载类型,比如 `Containers`、`Functions`、`VirtualMachine`、[`VirtualService `](https://istio.io/docs/reference/config/networking/virtual-service/) 等。OAM 目前定义的核心负载类型有 [ContainerizedWorkload](https://github.com/oam-dev/spec/blob/master/core/workloads/containerized_workload/containerized_workload.md)(与 Kubernetes 中的 [Pod 定义](https://kubernetes.io/zh/docs/concepts/workloads/pods/pod/)类似,同样支持定义多个容器,但是缺少了 Pod 中的一些属性 )。
- `parameters`:在应用程序运行时可以调整的参数,即应用开发者在 `Component` 中的原有定义可以在运行时被应用运维人员覆盖。`parameters` 使用 [JSONPath](https://kubernetes.io/zh/docs/reference/kubectl/jsonpath/) 的方式引用 `spec` 中的字段。
> `Component` 的配置在应用后是**可更改的Mutable** 有的 [`Trait`](trait.md) 可能会监听 `Component` 的变更并作出相应的操作,每次变更都会导致新的 `ApplicationConfiguration` 发布。
>
关于 Component 的详细信息请参考 OAM 中的 [Component 规范](https://github.com/oam-dev/spec/blob/master/4.component.md)。
## 参考
- [The Open Application Model specification - github.com](https://github.com/oam-dev/spec)

View File

@ -0,0 +1,40 @@
# 定义云原生应用
本文参考的是 [OAM 规范](https://github.com/oam-dev/spec)中对云原生应用的定义,并做出了引申。
云原生应用是一个相互关联但又不独立的组件service、task、worker的集合这些组件与配置结合在一起并在适当的运行时实例化后共同完成统一的功能目的。
## 云原生应用模型
下图是 OAM 定义的云原生应用模型示意图,为了便于理解,图中相同颜色的部分为同一类别的对象定义。
![云原生应用模型](../images/cloud-native-app-model.png)
OAM 的规范中定义了以下对象,它们既是 OAM 规范中的基本术语也是云原生应用的基本组成。
- **[Workload](../spec/workload)(工作负载)**:应用程序的工作负载类型,由平台提供。
- **[Component](../spec/component)(组件)**:定义了一个 `Workload` 的实例,并以基础设施中立的术语声明其运维特性。
- **[Trait](../spec/trait)(特征)**:用于将运维特性分配给组件实例。
- **[ApplicationScope](../spec/application-scope)(应用作用域)**:用于将组件分组成具有共同特性的松散耦合的应用。
- **[ApplicationConfiguration](../spec/application-configuration)(应用配置)**:描述 `Component` 的部署、`Trait` 和 `ApplicationScope`
OAM 规范中提供了一个使用以上对象定义云原生应用的[工作流示例](https://github.com/oam-dev/spec/blob/master/examples/workflow.md)。
## 关注点分离
下图是不同角色对于该模型的关注点示意图。
![云原生应用模型中的目标角色](../images/roles.png)
我们可以看到对于一个云原生应用来说,不同的对象是由不同的角色来负责的:
- 基础设施运维:提供不同的 `Workload` 类型供开发者使用;
- 应用运维:定义适用于不同 `Workload` 的运维属性 `Trait` 和管理 `Component``ApplicationScope` 即作用域;
- 应用开发者:负责应用组件 `Component` 的定义;
- 应用开发者和运维:共同将 `Component` 与运维属性 `Trait` 绑定在一起,维护应用程序的生命周期;
基于 OAM 中的对象定义的云原生应用可以充分利用平台能力自由组合,开发者和运维人员的职责可以得到有效分离,组件的复用性得到大幅提高。
## 参考
- [The Open Application Model specification - github.com](https://github.com/oam-dev/spec)

View File

@ -17,19 +17,19 @@
启动第一个实例作为Master节点在web终端上执行
1. 初始化master节点
**1.** 初始化master节点
```bash
kubeadm init --apiserver-advertise-address $(hostname -i)
```
2. 初始化集群网络:
**2.** 初始化集群网络:
```bash
kubectl apply -n kube-system -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
```
3. 执行下列初始化命令:
**3.** 执行下列初始化命令:
```bash
mkdir -p $HOME/.kube
@ -37,7 +37,7 @@ cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
```
4. 启动新的实例作为node节点根据master节点上的提示在新的web终端上执行
**4.** 启动新的实例作为node节点根据master节点上的提示在新的web终端上执行
```bash
kubeadm join --token 513212.cfea0165b8988d18 192.168.0.13:6443 --discovery-token-ca-cert-hash sha256:b7b6dcc98f3ead3f9e363cb3928fbc04774ee0d63e8eb2897ae30e05aebf8070

View File

@ -0,0 +1,43 @@
# Trait
本文基于 OAM v1alpha2 版本。
`Trait` 用于定义 `Component` 的运维属性,是对 `Component` 运行时的叠加,需要通过 `ApplicationConfiguration` 的配置将其与 `Component` 绑定,用于动态修改 `Component``workload` 的行为。
不同的 `Trait` 可能适用于不同的 `Component`(因为不同的 `Component` 中的 `workload` 可能不同,因此它们的运维特性也可能不同),如流量路由规则(如负载均衡策略、入口路由、出口路由、百分比路由、限流、熔断、超时限制、故障注入等)、自动缩放策略、升级策略、发布策略等。
`Trait` 还具有以下几个特征:
- `Trait` 是根据在 `Component` 中引用的顺序应用的,如果某些运维特征本身具有依赖性,可以通过显式排序来解决;
- 对于某一类型的 `Trait` 在同一个 `Component` 实例只能应用一个;
- 在应用 `Trait` 时,需要进行冲突检查,如果一组 `Trait` 的特性不能满足运维组合,则判定为不合法;
将运维属性从应用组件本身的定义( `Component`)中剥离有如下几个好处:
- `Trait` 通常由应用运维人员定义和维护,而不需要应用开发人员参与,应用开发人员对 `Trait` 可能无感知,减轻了应用开发人员的负担;
- `Trait` 将云原生应用程序的一些通用运维属性从应用配置中剥离出来,大大提高了运维逻辑的可复用性;
- 应用 `Trait` 组合前进行运维特性检查,可以有效防止配置冲突和无法预期的情况发生;
下面是根据 OAM 规范定义的一个 Trait 示例。
```yaml
apiVersion: core.oam.dev/v1alpha2
kind: TraitDefinition
metadata:
name: manualscalertrait.core.oam.dev
spec:
appliesToWorkloads:
- core.oam.dev/v1alpha2.ContainerizedWorkload
definitionRef:
name: manualscalertrait.core.oam.dev
```
> CR 即 Custom Resource自定义资源指的是实例化后的 Kubernetes [CRD](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/)。`definitionRef` 将 `Trait` shcema 在 OAM 解释器中注册,通过增加一个抽象层,使其与 Operator 框架解耦(毕竟不是说有 CRD 都是面向应用开发者的)。
OAM 中将 `Trait` 分成了 `core.oam.dev`(核心)、`standard.oam.dev`(标准)及自定义扩展类别。一个 `Trait` 具体适用于哪些 `workload` 可以在 `Trait``TraitDefinition` 中定义。目前 OAM 中支持的核心 `Trait` 有 [`ManualScalerTrait`](https://github.com/oam-dev/spec/blob/master/core/traits/manual_scaler_trait.md)。
关于 Trait 的详细请参考 OAM 中的 [Trait 规范](https://github.com/oam-dev/spec/blob/master/6.traits.md)。
## 参考
- [The Open Application Model specification - github.com](https://github.com/oam-dev/spec)

View File

@ -0,0 +1,29 @@
# Workload
本文基于 OAM v1alpha2 版本。
应用程序可用的 `Workload` 类型是由平台提供商和基础设施运维人员提供的。`Workload` 模型参照 [Kubernetes 规范](https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/#required-fields)定义理论上平台商可以定义如容器、Pod、Serverless 函数、虚拟机、数据库、消息队列等任何类型的 `Workload`
下面是一个 `Workload` 定义的是示例。
```yaml
apiVersion: core.oam.dev/v1alpha2
kind: WorkloadDefinition
metadata:
name: schema.example.jimmysong.io
spec:
definitionRef:
name: schema.example.jimmysong.io
```
> CR 即 Custom Resource自定义资源指的是实例化后的 Kubernetes [CRD](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/)。应用开发者可以在 `Component``Workload` 中直接定义 CR。`definitionRef` 将 `Workload` shcema 在 OAM 解释器中注册,通过增加一个抽象层,使其与 Operator 框架解耦(毕竟不是说有 CRD 都是面向应用开发者的),表示可作为负载类型使用。
请保持 `spec.definitionRef.name` 的值与 `metadata.name` 的值相同,因为 `definitionRef` 是对相应的 `Workload` schema 的引用,对于 Kubernetes 平台来说,即对 [CRD](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) 的引用。应用开发者在定义 [`Component`](component.md) 引用该 `Workload` 的时候需要直接实例化一个 CRD 的配置(及创建一个 CR
OAM 中将 `Workload` 分成了 `core.oam.dev`(核心)、`standard.oam.dev`(标准)及自定义扩展类别。目前 OAM 中支持的核心 `Workload` 有 [`ContainerizedWorkload`](https://github.com/oam-dev/spec/blob/master/core/workloads/containerized_workload/containerized_workload.md)。
关于 Workload 的详细信息参考 OAM 中的 [Workload 规范](https://github.com/oam-dev/spec/blob/master/3.workload.md)。
## 参考
- [The Open Application Model specification - github.com](https://github.com/oam-dev/spec)

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
images/roles.png 100644

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB