
Azure顾问一直在寻求扩大我们的专业范围,并与此保持一致。我最近参加了在悉尼举行的Microsoft容器OpenHack。这次活动对我来说是一次巨大的成功,通过3天的一系列挑战,我快速介绍了Kubernetes(K8s)和Azure Kubernetes服务(AKS)。
Microsoft openenhack是一个以开发人员为中心的参与项目,在这个项目中,各种各样的参与者(Open)通过使用模拟开发人员旅程的真实客户场景的挑战(Hack)来学习实践(Hack)
我在openenhack的经历
大约80名与会者分别坐在房间里的20张桌子上。我的团队有2名国际参与者和3名当地人(包括我自己)。每个加入OpenHack的人都有不同程度的K8s/AKS的实际经验,所以事情注定是有趣的。openenhack的潜在主题是,在挑战中没有明确的前进道路,“未知”因素总是存在。
The-Super-Awesome-Hacker-Team
- Chan -新加坡
- 勇——韩国
- 克里斯-澳大利亚
- 俄罗斯人——澳大利亚
- 杰西(我)-澳大利亚
作为乐趣的一部分(因为我们获得了Azure订阅的独立AAD登录名),我们的团队使用了诸如hacker1
,hacker2
,hackerX
.在大多数挑战中,我们都觉得自己真的做到了黑客
一个解决方案只是为了通过成功的标准。
并通过黑客
我指的是:
- 在知识库文章中搜索代码示例或架构指南
- 创建新的.YAML配置文件以将更改应用到K8s/AKS
- 通过VSCode在Kubectl和AzureCLI中测试代码示例
- 排除抽象错误和/或连接/安全问题
- 通过知识库文章进行更多搜索
- 更多的代码测试
- 终于有工作了,达到了成功的标准
在K8s/AKS中运行的应用程序的元素有时会在更改过程中中断,我们会很高兴地修复它。这是一个巨大的学习机会,通过打破/修复,这不是你在正常情况下经常会经历的。
在根据挑战要求对K8s/AKS环境做出改变后,我们的教练会让我们展示/证明每个成功标准。例如:演示在集群访问时提示您使用AAD进行身份验证。在我们等待什么东西,任何东西崩溃的时候,这里有一些紧张的时刻。
由于openenhack的时间有限(3天),我们的重点是通过满足成功标准快速完成挑战。这经常导致我们实现任何可用的解决方案,因为没有足够的时间来比较选项最好的
vs次优的
的决定。在这种情况下,我很乐意抛开咨询习惯,让事情继续进行下去。
我个人认为openenhack的结构是可行的,因为类似于Escape Room,它看起来就像微软把你锁在了房间里,而要想出来,你需要在Azure上构建一个工作的Kubernetes环境。在黑客马拉松中,团队只有有限的时间和资源来设计和展示他们的提交,这也是一个类似于openenhack运作方式的概念。
挑战和关键概念
容器OpenHack包括8项挑战,需要在3天内完成。不幸的是,我们超级棒的黑客团队没有时间完成所有这些工作,但无论如何,这是一次很好的学习经历。
我试着把每个挑战压缩成一个段落,并附上关键概念的链接。
挑战1 /第一天
我们曾经码头工人构建、标记和推送图像到Azure容器注册(ACR)基于应用程序源代码。Docker也被用来拉出、运行和配置一个SQL Server容器在Azure。
- https://docs.docker.com/get-started/
- https://docs.docker.com/engine/reference/builder/
- https://docs.docker.com/engine/reference/commandline/cli/
- https://docs.docker.com/network/
- https://docs.microsoft.com/en-us/azure/container-registry/
- https://docs.microsoft.com/en-us/azure/container-registry/container-registry-tutorial-quick-task
- https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-2017&pivots=cs1-bash
- https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-configure-docker?view=sql-server-ver15
挑战2 /第一天
我们创建了一个Azure Kubernetes服务(AKS)集群和配置环境变量对于应用程序的微服务,然后将应用程序部署到AKS集群中。
- https://docs.microsoft.com/en-us/azure/aks/concepts-clusters-workloads
- https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/
- https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/
- https://kubernetes.io/docs/tasks/access-application-cluster/port-forward-access-application-cluster/
- https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/
- https://kubernetes.io/docs/reference/kubectl/overview/
- https://docs.microsoft.com/en-us/azure/aks/kubernetes-walkthrough
- https://docs.microsoft.com/en-us/cli/azure/aks?view=azure-cli-latest#az-aks-create
- https://docs.microsoft.com/en-gb/azure/aks/cluster-container-registry-integration
挑战3 /第二天
我们配置了专用VNET /子网为部集群和设置Azure容器网络接口(CNI). 我们还设置了油气地质集成用于集群身份验证。
- https://docs.microsoft.com/en-us/azure/aks/concepts-identity
- https://docs.microsoft.com/en-us/azure/aks/azure-ad-integration-cli
- https://docs.microsoft.com/en-us/azure/aks/control-kubeconfig-access
- https://docs.microsoft.com/en-us/cli/azure/ad?view=azure-cli最新版本
- https://docs.microsoft.com/en-us/azure/aks/configure-azure-cni
挑战4/第2天
我们配置Kubernetes名称空间和RBAC绑定将访问权限分配给不同的应用程序团队。我们曾经密钥库FlexVolume和Azure密钥库保护我们的环境秘密。我们还创建了Kubernetes入口控制器用于入站的第7层流量转发到我们的服务。
- https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
- https://github.com/Azure/kubernetes-keyvault-flexvol
- https://docs.microsoft.com/en-us/azure/aks/concepts-network#ingress-controllers
- https://docs.microsoft.com/en-us/azure/aks/ingress-basic
- https://docs.microsoft.com/en-us/azure/aks/operator-best-practices-cluster-security
- https://docs.microsoft.com/en-us/azure/aks/concepts-identity#role-based-access-controls-rbac
- https://docs.microsoft.com/en-us/azure/aks/azure-ad-rbac
挑战5/第3天
我们使用Azure监控的见解、实现资源限制通过YAML在新部署的应用程序上(该应用程序需要大量资源),并测试Kubernetes仪表板.
- https://docs.microsoft.com/en-us/azure/architecture/microservices/logging-monitoring
- https://docs.microsoft.com/en-us/azure/azure-monitor/insights/container-insights-overview
- https://docs.microsoft.com/en-us/azure/azure-monitor/insights/container-insights-agent-config
- https://docs.microsoft.com/en-us/azure/azure-monitor/insights/container-insights-log-search#search-logs-to-analyze-data
- https://docs.microsoft.com/en-us/azure/kusto/
- https://docs.microsoft.com/en-us/azure/azure-monitor/insights/container-insights-alerts
- https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
挑战6 /第三天
我们研究了增强集群安全通过对流量和应用程序访问施加限制。最终,由于时间的限制,团队决定不进行这个挑战。
- https://kubernetes.io/docs/reference/access-authn-authz/service-accounts-admin/
- https://docs.microsoft.com/en-us/azure/aks/use-pod-security-policies
- https://docs.microsoft.com/en-us/azure/aks/use-network-policies
- https://docs.microsoft.com/en-us/azure/aks/api-server-authorized-ip-ranges
- https://docs.microsoft.com/en-us/azure/aks/limit-egress-traffic
- https://docs.microsoft.com/en-us/azure/sql-database/sql-database-vnet-service-endpoint-rule-overview
- https://docs.microsoft.com/en-us/cli/azure/network/vnet/subnet?view=azure-cli-latest#az-network-vnet-subnet-update
- https://docs.microsoft.com/en-us/cli/azure/sql/server/firewall-rule?view=azure-cli-latest
挑战7 /第三天
我们部署了一个部Windows集群和Windows Nodepools.我们还配置了污染了在Nodepools和的纵容允许将Linux和Windows容器部署到相同的AKS集群。
- https://kubernetes.io/docs/setup/production-environment/windows/intro-windows-in-kubernetes/
- https://docs.microsoft.com/en-us/azure/aks/use-multiple-node-pools
- https://docs.microsoft.com/en-us/azure/aks/windows-container-cli
- https://docs.microsoft.com/en-us/virtualization/windowscontainers/about/
- https://docs.microsoft.com/en-us/azure/aks/use-multiple-node-pools#schedule-pods-using-taints-and-tolerations
挑战8 /第三天
我们考虑部署一个服务网使用以下两种方法进入AKS集群:Linkerd或Istio.服务网格将提供类似的功能交通管理和弹性并将这些功能从应用程序层解耦到基础架构层。最终,我们在这里的时间用完了,无法让它工作。
- https://docs.microsoft.com/en-us/azure/aks/servicemesh-about
- https://linkerd.io/2/getting-started/
- https://docs.microsoft.com/en-us/azure/aks/servicemesh-linkerd-about
- https://docs.microsoft.com/en-us/azure/aks/servicemesh-linkerd-install?pivots=client-操作系统linux
- https://istio.io/docs/concepts/what-is-istio/
- https://docs.microsoft.com/en-us/azure/aks/servicemesh-istio-about
- https://docs.microsoft.com/en-us/azure/aks/servicemesh-istio-install?pivots=client-操作系统linux
闭幕词
我的第一次微软OpenHack是一次很棒的经历。我的期望值很低,离开时,我对Kubernetes和Azure Kubernetes服务的亲身体验比我希望在3天内实现的还要多。
你可以看看是否有一个活动在你附近-https://openhack.microsoft.com/
欢呼,杰西