下一级人工和x射线HA数据与PostgreSQL容器- Steve Pousty, Crunchy Data
你在Kubernetes中运行Artifactory或Xray,你想知道如何让它背后的PostgreSQL成为高可用性(HA)。本演讲将首先讨论在容器中运行RDBMS时的一些注意事项。在那之后,剩下的演讲都将演示:
1.使用Kubernetes操作符启动HA PostgreSQL
2.将Artifactory或Xray连接到该DB集群
3.扩展JFrog二进制文件和数据库。
在本讲座结束时,你将看到在Kubernetes中运行HA JFrog和HA PostgreSQL是多么简单和直接。
视频记录
好吧。那就是我。Crunchy Data是我工作的公司。我们是Postgres人。你可以在那里找到我,史蒂夫。那是零,因为我是那样的精英。只是想让你知道…我会在我们进行的过程中告诉你的。每个人都准备好了吗?
所以议程是一个大议程。准备好把这些都写下来了吗?我们将讨论DevOps和Kube…Kubernetes。你们中有多少人已经在使用Kubernetes?三个,四个,大概半个房间。五个好吧。
你们中有多少人是运维人员?如果你是行动组的,请举手?我要看看……
好吧。你们中有多少人是真正的开发人员?然后那些没有举手的人,你是什么。你是DevOps或者你介于两者之间或者你是系统管理员,因为没有其他人会做?你就是这样的人吗?
你可能会说:“我是一名开发人员,但没人做……好吧。”好。
然后是demo。这就是整个议程。有很多规则。准备好迎接这些吧。你会问问题。我知道他们说你可以等,你应该等到最后。这意味着,我可能会打断你,因为我只有45分钟的时间。所以我可能会说,“好吧,我们待会再谈这个。”但是我喜欢在Sub - Talk中提问,因为如果大家迷路了,或者有什么问题。当我们在旋转演示的时候会有停顿,当事情旋转的时候,那也是提问的好时机。好吧?
另一部分就是要玩得开心。这就是全部,这是唯一的两条规则,好吗?所以不要太严肃。
那么为什么是Postgres呢?在真正的谈话中。为什么PostgreSQL ?我说真的,你们都很聪明。你们现在可能都在使用Postgres。这是真的吗?谁不在任何地方使用Postgres ?正确的。完全正确。所以我不需要说服你使用Postgres,对吧?
我的意思是,即使是JFrog的东西在默认情况下也会随Postgres一起发货。所以这是一个非常自然的匹配。但为什么是Kubernetes?所以教室里只有一半的人说你在用Kubernetes。在我加入Crunchy之前,我在红帽公司工作,我在OpenShift团队工作,这是红帽公司的Kubernetes发行版。所以你会听到一点为什么我认为Kubernetes实际上是一个好东西。因为主要的原因是因为这是你真正想要的抽象层次。对吧?
我们大多数做开发的人。尤其是那些同时也是系统管理员的开发人员,你肯定不是在你所工作的抽象层次上工作,对吧?你正在阅读如何安装rpm,做所有这些奇怪的配置,摆弄网络设置,摆弄存储和所有这些你实际上并不真正了解的东西……要么知道很多,要么想花很多时间去做。我要讲一下为什么我们喜欢。请Steven详细解释一下为什么这是正确的抽象层次?
首先,它适用于容器。所以你可以在没有Kubernetes的情况下使用容器,但你们中有多少人使用过三四个以上的容器来协调它们呢?有人试过吗?不,因为你很聪明,对吧?
一旦您不再运行单个容器,它很快就会偏离方向,试图让所有东西都运行起来。Kubernetes允许这样做。但是容器的另一个优点是,那个在SE Linux上工作并把它放进内核的红帽家伙,当我和他一起参加第一届DockerCon时,他说他不关心容器的所有其他东西。他喜欢容器的原因是,我们终于可以按照应该交付的方式交付软件了。它不仅仅是在你的机器上输入比特。对吧?这不仅仅是,“这是RPM。”现在你有了比特,你需要配置和做所有这些事情。
实际上,您已经准备好了在容器中运行的软件。你说,“快跑。”或者你运行它,它都配置好了。这样做的好处是它是不可变的。如果出了问题,你会怎么做?你是否必须重新安装,做所有这些,然后卸载并弄清楚你更改了哪些设置?不。你基本上只是重新启动容器,因为它已经准备好运行了。第二部分是,专家可以制造容器,你可以直接消费它们。或者您的IT团队可以在该容器之上进行构建。 So it allows for good building. Is this useful to people? This discussion?
如果大家都觉得无聊,我就不想继续讨论大家都觉得无聊的话题。大家都明白了吗?
另一个好处是,它为您提供了多种方法来描述具有相同概念的容器的配置。所以概念不会改变,但是你可以选择你的语言。你可以用YAML或JSON。有多少人喜欢直接使用YAML或JSON?不。你会怎么做?你们真是稀有品种。
你可以在赫尔姆工作。你们有人试过赫尔姆吗?Helm是一个很好的配置管理器,我稍后会向您展示Artifactory Helm模板。你也可以用Ansible来写。你们公司有人已经在使用Ansible了吗?好的,如果你已经知道了Ansible,你可以使用Ansible作为Kubernetes集群的配置管理。可能还有其他我不知道的问题,我已经一年多没有进入这个生态系统了,所以现在一切都不一样了。
软件供应商可以进行自我意识包装。因此,除了传递container,你还可以创建一个叫做Operator的东西。它包括容器,但是这些,一个操作员知道如何升级自己,它知道如何扩大和缩小自己。例如,当你扩展Postgres时,你能不能只增加新的副本?是的。你能缩小复制品的比例吗?没有问题。如果主人走了怎么办?这是个简单的问题吗?你能不能再找个新主人? No. That’s a bad idea. Right? If it doesn’t have all the data, if it doesn’t have all the settings… So the Operator and I’ll show this to you later, has way of handling failure in a way that simple Containers, by themselves, cannot. So if you haven’t looked into Operators for Kubernetes yet, I highly recommend you look into Operators.
这就是我所说的抽象层次的另一部分,你以一致的方式安装和管理软件。稍后你会看到,当我安装Artifactory和Postgres时,我们在同一层次上工作,我不必去学习如何从源代码或rpm安装Postgres。然后是那个配置和配置文件在哪里。我也不必对Artifactory做同样的事情,从rpm安装并了解它的配置文件是什么以及它将其秘密存储在哪里。都是一样的。因此,一旦您学习了如何在Kubernetes中安装和管理软件,您的所有软件都将以相同的方式安装。这就是我所说的抽象层次。
最后,因为你们很多人都和开发人员一起工作,要么支持他们,要么就是你自己,Kubernetes给了你一个真正清晰的关注点分离。最后这句话来自我的治疗师,清晰的界限,无限的可能性。对吧?如果你不记得整个演讲的其他内容,这就是我想让你记住的,因为它会让你成为一个更好的人。它会让世界变得更美好。所以如果你想想你在组织中发生的大多数冲突,大多数发生在哪里?在这里,大多数人……有两个群体认为他们拥有这个东西,他们是应该决定事情发展的人。想想当你和你的伴侣,你的配偶,你的孩子吵架的时候,通常是和你的孩子吵架的时候,他们不明白界限在那里,他们认为他们可以在那里。但这是一个共享的边界,不清楚谁负责。
Kubernetes的好处是它让边界变得非常清晰。维护集群的人,可以设置集群可以指定容器等等,开发人员可以设置环境变量或者设置秘密,可以设置环境变量,可以部署东西,就是这样。对吧?你不能去碰网络。你不能去改变版本和容器。对吧?负责的人说这是经过批准的软件,开发人员实际上并不关心,因为它实际上是为他们运行的,他们可以安装一些东西。这就是为什么Box的家伙给了Kubernetes很多很好的理由。最后一点是向您的开发人员推销Kubernetes的一个很好的理由。因为他们可以做他们想做的事情,而不必在软件上瞎折腾。
好了,介绍就到这里。关于这个介绍有问题吗?不用Kube的人都会回家从现在开始用Kube,对吧?好的,很好。
等等,带回家的留言是什么?
谢谢你,清晰的界限无限的可能。把它应用到你的生活中。我告诉你,我离婚了,现在我和一个人在一起六年了,这条信息是你能得到的关于婚姻或关系幸福的最好的信息之一。
好的,这个场景是人工HA,对吧?所以,正如我对那些后来来的人说的,我一开始说的是最初的标题,人工或x射线,都是一样的。基本上,JFrog处理它的方式是,我们做应用软件,Artifactory, XRay,你要给我们一个数据库,我们可以给你一个,但如果你想要高可用性,这取决于你。两者的过程都是一样的。你启动一个高可用性数据库,然后把它插进去,对吧?
所以我今天要展示Artifactory,但是x射线的过程是一样的。我不知道是不是为了他们全新的元数据大套件。我事先疯狂地发短信[听不清00:09:17]说:“嘿,嘿,嘿。这对整个大套房都适用吗?”但他没有回答。
因此,您可以依靠Artifactory来完成关键任务。对吧?如果开发人员拿不到他们的软件包,他们会有多高兴?
谢谢你!这不是一个很难的问题。其实我给你准备了一张贴纸。做志愿者,是的。不客气哦,抱歉。
问题是,就像我刚才说的,你不仅需要服务器具有高可用性,还需要数据具有高可用性。你们中有多少人的数据库在Artifactory下失败过?是啊,一旦数据库消失,人工工厂怎么办?一切都停止了,对吧?有6个Artifactory服务器很好,但如果没有数据库服务器,你就死定了。对吧?我们今天就来做这个。
这就是我刚才说的。那么我们如何让PostgresQL成为HA呢?因此,我将使用Kubernetes和Operators向您展示最简单的方法。好吧?
这就是Crunchy Data,我们将使用PostgresQL运算符。那是贴纸的符号,是河马,那是我们的符号。我喜欢这个,因为它在评判,作为一个纽约人,我喜欢评判,对吧?
演示时间,我们将。因为我使用OpenShift很长时间了,我们将使用OpenShift作为Kubernetes发行版,但所有这些东西都在普通的Kubernetes中工作。所以你不需要。只是界面不会那么好。好吧?我们将从一个空白的命名空间/项目开始。对于那些不使用Kubernetes的人来说,名称空间是你完成所有工作的地方。它有点像沙盒,在OpenShift中它被称为项目而不是命名空间。很酷?好吗?因为我想向你们证明你们可以做这个我们将在45分钟内做这个。有些片段需要一点时间,我们要让服务器转起来,对吧? But that’s a good time to ask me questions. Or we’re just going to stand here quietly and awkwardly and I’ll babble on about other relationship hits. So, let’s get going.
好吧,换。首先,我将向你们展示,这是OpenShift。前端非常复杂,我在那里工作时经常抱怨。这是我们的项目或名称空间。里面有什么?什么都没有。准备好了吗?我们走吧。
这是赫尔姆图,我稍后会给你们看。让我们开始吧。我们需要做的第一件事是……我已经将Postgres操作符安装到Postgres命名空间中。Postgres Operator基本上就像一个小rest服务,它知道如何管理安装和监视集群。我不想把它暴露给外界所以我要设置一些端口转发来和它对话。否则我就没法跟它说话了。
这是我的命令。是的,你看不到这个,没关系,因为我会在这里展示。每个人都够大吗?是吗?好吧。我在这里做的是设置端口转发到Pod。对于那些不熟悉Kubernetes的人,您可以将Pod视为容器。好吧,它不止于此,但在这里它是一个容器。我们刚刚设置了端口转发到8,4,4,3。这样我们就能和接线员谈谈了。
那么现在,它还足够大吗?好吧。让我们启动一个Postgres集群。我之所以有稿子,是因为没人喜欢看主持人打错字,对吧?所以我先打,然后我们再谈。所以,我在这里要说的是,“嘿,PGO是我们的操作符命令行。”我们说,“创建一个集群,将其命名为cluster。”因为我真的很机智。“我不要靠背。”这是备用的,不要放进去。 And the replica count, I want to have one master and one replica. And the namespace I want to put it into is Artifactory. And so it says, “Okay, great. I’m off doing that.”
现在,如果我们看一下我们的集群。它已经在旋转了。所以这是Pod, a星团本身就是主星团。够大吗?不,没人能看到后面的人吗?
是的,没有。你跟我年纪差不多,而且你没戴眼镜。怎么样?这样好点了吗?好吧。
于是大师纺纱起来了。主服务器正在运行,请注意副本没有启动。注意它是浅蓝色的。你能看到吗?让我点击一下。看到浅蓝色了吗?哦。还是淡蓝色,很好。它是浅蓝色,这意味着我们已经拉下了容器,但它还没有准备好提供内容。所以师父是浅蓝色的,然后变成了深蓝色。 Yeah?
没有数据。我们确实在默认情况下创建了一个与项目名称相同的数据库。
有一个方案。我们把一个方案。我们把一个空白方案放进去,它只是数据库,没有DDL。我们还没有做过其他的DDL。
现在它上升了,对吧?这就是启动Postgres的HA集群所需的时间。你们之前有谁启动过HA Postgres吗?是啊,好玩吗?
是啊,那你有多喜欢读那些书,做那些事?
好吧。那么它是如何工作的呢?我给你们看个简单的东西。Kubernetes中的服务是…Kubernetes有这样一个概念,其中有容器,然后它将构建一个服务,你想要与容器对话。对吧?放进那些容器里。这基本上是一个负载平衡。它是一个代理和负载平衡器。因为你不想。如果你启动了多个副本,你不想跟踪所有那些正在启动的不同pod或container。你总是想通过这个服务来交谈。 Right? And that IP address for that service is guaranteed for the life of the cluster.
所以我们刚刚启动了这项服务。这个也被创造出来了。副本服务和主服务器服务各有一个。如果我点击master,你可以看到它正在把东西发送到Pod,你可能看不到,因为它很小。你可以看到,它路由到那个Pod, a集群Pod,而不是。如果我回到这里。它要去a群舱,对吧?不是a群吊舱,不是a群fpyz吊舱。明白了吗?这是相对清晰的吗,像泥一样?就像泥巴一样,不。 Not as mud? Good, thank you.
好了,我们已经运行了集群。现在,我们要启动Artifactory。再说一次,这就是我所说的在Kubernetes世界中事情非常简单的地方。所以我打开我的脚本,首先我发现,Artifactory有一个Helm图表。太棒了。我已经添加了Helm Repo和Helm命令行,现在我要安装图表了。所以,我们原本打算做HA Artifactory但不知何故,我们无法让授权团队及时给我正确的授权。所以我可以启动HA,只是我没能及时获得许可。所以…
我们只展示单品,但它和HA是一样的。对不起。好,我粘贴一下然后我们看看会发生什么。
所以我们说,你可以说升级dash dash install。这意味着如果它在那里,升级它,否则安装它。然后,剩下的内容说,“将其命名为Artifactory Single,使用Jfrog Artifactory Helm Chart,将其放入名称空间Artifactory,然后我就得到了一个YAML文件,我希望您在其中读取所有内部配置。”对吧?我没有给你们看。我们的准时度如何?这是什么意思?
还剩22分钟?如果最后还有时间,我将向您展示YAML文件,我已经在这里了。我不知道如何让字体变大,但我有YAML文件,我会弄清楚如何让字体变大,如果需要的话,我们可以看一遍。让我从头到脚讲一遍,实际上,人工制造需要一些时间。
怎么啦?
哦,Command Plus?不。
这不是Mac电脑,哦,谁会用…
不。我在试Control + Shift +。不。
是吗?不。不。
我换个编辑器。怎么样?
实际上,在我们等待VS Code启动的时候,让我们回到这里,看看发生了什么。我们在这里开始了两个不同的东西,这实际上是很重要的一点。这是Kubernetes旋转的另一个优点。它们使用的是StatefulSet,它是Operator的前身。我们已经启动了神器。你们中有多少人通过命令行自己创建了Artifactory ?
即使容器升起来了,还会升起什么呢?
JAVA应用,对吧?因此,即使容器已经启动,这就是它是深蓝色的原因,我们仍然在等待JAVA应用程序启动。这就是为什么NGINX Pod显示我还没有准备好。因为,如果我们去NGINX Pod,它实际上已经准备好了,如果我看它的日志,它已经启动了一段时间。但是如果我给你们看这些事件,当我一直在的时候很难看到,如果我给你们看这个事件,我们会变得不健康。Kubernetes有这种活动探测和准备探测的想法如果你做一个HTTP探测,如果你返回404或其他任何东西,而不是200到399,它会说,“我不好”
那么JAVA应用程序此时返回什么呢?
要么什么都不返回,要么给出500错误信息因为应用服务器没有启动,它在做一些事情。所以NGINX说,我还没有准备好提供内容,我不会开始提供内容,直到应用服务器真正启动并准备好提供内容
那么,为什么这样对你有好处呢?
因为你不会坐在那里,把东西旋转起来,然后在它真正准备好在生产中展示之前就把它投入生产。对吧?它实际上是在拖延。我们来看看是否完成了。这是完成了。
所以如果我想看这个,我就别管那个了。我去应用程序,服务。我们有这个Artifactory NGINX,这是一个IP地址,我可以做一个。我可以做一个,它会有一个名字,但现在这已经足够好了。
它是人工制品前面的代理。
你不需要去想它,对吧?你可能读过,“哦,我真的应该让Artifactory做点什么。”你会想,“哦,我不想处理那个连接器,我不想再学习另一个软件包。”Jfrog的专家,[听不清00:21:01]说,“我要建立一个Helm Chart,它能正确地完成所有的事情,为你提供Artifactory和NGINX的配置。不是开始,而是真正开始的时候。你只要装上掌舵图,我就会为你创造奇迹。”
所以它起作用了。所以我们刚刚启动了人工工厂,是吗?
掌舵图知道从哪里提取。
但这是真的吗?
不,这些都在一个集群中运行,在谷歌中运行。这是我在Google里建立的OpenShift集群。不是我安排的,是我的运维团队安排的,因为我讨厌管理。我是一个开发者。但这是我的功劳。我应该。这完全是我安排的。
好了,下一个,准备好了吗?
这不是我现在想看到的。如果我们有时间的话。好了,这是我们的执照。我拿到驾照了。现在我还有一个ALT键要做。要记住这点。我们有执照,设个密码吧。哦,你要知道,如果你输入的密码没有通过,如果它很弱,它就不会让你输入那个密码。只是想让你知道。也许有人在做这件事的时候就发现了。 I don’t have a proxy server, let’s make a generic one because that’s the easiest for one when you work with. But let’s make this one. Let’s try one of the new ones. Anybody doing R at their company?
没有?是啊,但你在Jfrog。有人在他们的公司里做Docker吗?那不是新买的吧?康达,有人在演康达吗?Python吗?不,你们宣布的另一个新项目是什么?
怎么啦?
走了。
走了。有人在玩围棋吗?
因为他,我们也会在那里放一个Go版本的仓库。好了,我们做完了。太棒了。听着,我们所有的仓库都准备好了。
我们去generic local。我现在不能和总机通话。让我回过头来。因为如果我们有时间,我会在最后把它清理干净,告诉你们删除所有东西是多么容易。我到这里来。重做进港。好吧。
在这里输入我的密码。你们以前见过这个屏幕吗?我需要把它放大吗,还是大家都知道我在做什么?大家都知道我在做什么吗?好吧,因为我只想上传一些普通的东西。
让我们上传一些通用的东西。我的主目录里有些东西。让我们清除这个屏幕。粘贴。然后文件的名字是helloswamp。txt,你们对我的创意很惊讶吧?在cluster和helloswamp之间。上传了一个文件,我们去看看。所以我们到这里。通用本地,这是我们的文件。好了,那么我已经向每个人证明了这个Artifactory存储库是工作的吗? Okay.
准备好了吗?灾难的时间。我们有。我刚刚建立了一个。首先,这是否比你通常建立Artifactory集群的速度快?和容易吗?我希望我已经证明了Kubernetes的原因,没有更多关于为什么你应该转移到Kubernetes的讨论,对吧?因为这对我来说太神奇了。好了,现在让我们来看看为什么要运行HA。
现在我回到Kubernetes集群,我们将进行概述。我们又说了一遍,这个荚体,a星团的那个是我们的主星,对吧?如果我们再看一下这个名字,这里我要看一下Pod,看到它像dash 6,6,9等等等等。它实际上和这个是一样的。所以去那个Pod的服务路线,就是我们的主人,对吧?主服务器的服务名称是A-cluster。我想这和我们的项目名字一样。
现在,我不打算通过Kubernetes kill来作弊。对吧?我要做的是测试在座各位的知识。我如何杀死一个容器?在容器内?这只是容器知识。
好了。给你的贴纸。所以基本上你在主进程中结束,容器说,“哦,我的主进程死了,我需要重新开始。”好吧,重新启动容器。”如果没有有状态的东西,这是很好的,但是数据库是有状态的吗?确实如此。所以你不…我先做这个。PS-AUXW的过程后…我可以把它变小,这样我可以看到发生了什么?我们再做一次。我想终止这个Postgres进程,它是110。 PS-9 110, watch what happens. PS… not PS… where was the programming here folks? Kill dash 9. And what happens immediately? The terminable is disconnected, that Container is dying. If I go back to the overview, here’s our A-cluster. You’ll notice this is no longer ready. That dark blue is it killing it. That Container is gone.
现在,看看会发生什么。我应该旋转起来吗,我们为什么不让它成为大师?其实这个应该已经是master了。看看有没有改变。是的。看看这个服务发生了什么。你能看到吗?它现在指的是哪个Pod ?另一个。操作员知道,如果我的速度够快的话,你就会看到当Pod死亡的时候,直到这个Pod完全被原来的主服务器所取代,它才会交换服务。 Have any of you had a master die and spun up another master too quickly? Have you ever tried that? It’s called split in Postgres, where it doesn’t know which is the real master and the whole cluster is now hosed.
所以接线员知道,“不,嗯,我必须等到那东西完全没电了,然后我才能切换服务。”这就是我们的新主人了。它把那个当作我们的主人。到这个时候,它应该已经产生了另一个复制品。对吧?这是我们以前的,现在是我们的主人。这就是我们的复制品。我们有一个....我们不仅能够快速地进行故障转移,而且还拥有另一个副本,以防再次发生故障。
为了证明它还在运行,我刷新一下这个页面。它还在运行。好吧?有多少个呼机响了?零。为了让Pod失败,除了杀死它,我还做了多少工作?零。对吧?所以对于那些。特别是对于那些像我的朋友一样无意中成为系统管理员的人还有你,我想你也是。你是不是有点像系统管理员。 This is perfect. No beepers went off. Nobody got upset except for maybe five seconds while the failover was happening and they were like, “Oh I was down, oh I refresh, it’s back.”
好的,我们在几分钟内设置了数据级别的HA可用性。我应该扩大我的副本吗?要我把复制品放大吗?有人想知道吗?是吗?谁答应了,你又答应了。我已经给你一张贴纸了。必须有人站出来说话。
这很简单。这应该是,让我看看我能不能记住这个。PGO秤,是PGO秤吗,我想是的。然后是一个星团。它说:“你确定吗?”我说:“是的。”它说:“太好了。”然后我回到这里,现在我有另一个在旋转。对吧?这里有很多负载,我刚刚缩放了很多负载。 And, if I kill that main one again, it’ll keep two up at all time now.
你是想添加一个端口,不是端口文件夹,是连接端口吗?假设我们说"哦"假设这只是一个普通的开发集群,您看到开发人员现在启动HA集群是多么容易了吗?这样当他们真正在做开发工作时,他们就能体会到这是什么感觉。它们实际上可以从副本中读取数据并向主服务器写入数据。从一开始就构建正确的体系结构模式。因为一旦你成为集群中的操作员,任何人都可以使用它。
如果我想添加。现在我想添加一个连接池。我要添加PgBouncer。我只需要在这个集群中创建PgBouncer。大家都知道PgBouncer是什么吗?它是一个服务连接池,而不是连接池在你的应用中你实际上。让我先给你们展示它是启动的,然后我会解释它。因为这样你就会想,“哦,他只是在说话,而它永远都不会旋转起来。”它已经在那里了。对吧?
它是一个作为连接池运行的服务器。而不是在应用中。因为如果你在应用中放入连接池你想改变连接池的任何东西你需要做什么?你必须跳出你的应用,这可能不是一个好主意。有了这个,你可以在app外部拥有连接池,你可以为副本创建一个bouncer,也可以为读和写创建一个bouncer。好吧?你甚至不需要弹出bouncer来让它做连接设置。你可以对它进行rest调用,让它动态地改变配置。
这就是添加它的简单程度。或者你可以加上多个,把它们连在一起。但关键是,我要读多少说明书才能做到?一个。它说如何添加弹跳PGO,创建弹跳器。一旦我记住了,就完成了。这就是算子的美妙之处。好吧?
如果你的应用也使用Postgres。我强烈建议你搬到操作员那里去。好吧?好吧,所以我想,哦,你想让我杀死它,群集?想看看杀人有多容易。让我们先关闭数据库。我可以给你们看。这个花了点时间,但是对于那些使用Kubernetes的人来说,它已经做出了所有的PVC要求这是它如何要求存储的。它甚至会清理自己的存储空间。
所以我们要说,我把它写进剧本了吗?我想我没有。不。对于PGO,它是PGO,删除,D, B,一个集群,所以,D,表示清理你的数据存储。因为你不一定总是想清理你的数据存储,对吧?容器可能是坏的,或者您可能希望以某种方式取回数据。我做错了什么?哦,对了。不。我做错了什么? PGO delete, oh right. I actually want to delete a cluster. Because you can delete the bouncer or whatever you wanted to.
现在如果我回到这里,我要把它弄小一点,因为你不需要读它,你可以看看发生了什么。所以,你可以看到它已经杀死了几个复制品,它杀死了主人,它杀死了主人,也杀死了其他的。他们都走了。我的数据库没了。完全消失了。为了证明这一点,让我们重新加载Artifactory,这就是我们现在要讨论的Artifactory。对吧?如果我回到这里,看看存储,你可以看到大部分存储都被回收了。Kubernetes在计时和回收存储方面有点奇怪,但它最终都会被回收。你看,它刚刚处理掉了另一个仓库。 Should we get rid of our Artifactory now too? How about we do that? Let’s do that.
所以我们说Helm purge,我记得我叫它什么来着,Artifactory Single?人工单,我认为这是正确的命令。不。哦,掌舵人,抱歉,掌舵人删除破折号清除人工制品单。现在如果我回到我的集群,我们又回到了原来的空项目。
所以最后的信息是为什么这让Kubernetes、Operators和Helm图表变得很棒?你想玩Mongo,但你不在公司里使用Mongo。不,你不想和Mongo玩,Mongo很恶心。你想玩Node, Node很棒。如果你想玩Node,你不需要学习如何安装这些东西。而且你不需要学习如何清理自己。你有operator,你有Postgres,然后你就完成了。对吧?你可以把它旋转起来,你的开发人员可以把它旋转起来,你作为系统管理员可以说,“这是我想让你使用的容器和Helm图表。”开发人员说:“太棒了,我不需要学习如何安装这些东西。” And you’re psyched because you’re like, “I know exactly what version they’re going to be using and I can tell them to set up Postgres HA so it’ll be exactly like I’m going to have it in production. So there’s no weird configuration movements.”
就是这样。我们做完了。我可以包起来。稍等,我可以回答问题。我们来总结一下。
哦,是这个。总结一下。哦,我没有把它做成动画。Kubernetes使您的DevOps和开发人员的生活更加轻松。让Artifactory或XRAY成为真正的HA是很容易的。然后,清脆的progresq操作符真的可以帮助你提升你的PostgresQL技能。所以不要告诉任何人你正在使用Operator,只要开始使用它,就像,“是的,我在Postgres上非常棒。我花了几个星期和额外的时间来做这件事。所以我要在海滩上休息一下,因为我花了很多时间学习Postgres的东西。”好吧?
然后,这里是幻灯片如果你想回到幻灯片。这就是你联系我的方式。
现在,哦,在最后的甲板上,如果你决定要Crunchy的东西,我不会讨论它,但它会讨论Crunchy作为一个人是谁。好吧?或者作为一个公司。我很脆,不是开玩笑的。这是一家相当大的公司。
有什么问题吗?
我知道,但我们还有时间。
如果我们没时间了…
现在?我们能在这里回答吗,这样我就可以把它放到视频里了?爸爸,请吗?
我们可以投票表决吗?
是的。有多少人想现在就在这里回答问题?有多少人想等到我们去另一个房间?所以没有人。好吧,多数人赢了。因为其他人都说,“我真的想早点去,这样我就可以给自己买零食了。”
你想走就走吧,谈话结束了。所以只有问题。
是吗?
好的,问题是,我已经用一个Postgres设置了Artifactory,把它旋转起来然后插入有多容易?
所以我不知道你是怎么安排Artifactory的。
你也用了赫尔姆?我不是Helm专家,我认为您可以这样做……您可以更改PGO YAML以指向新集群。
哦,对,对,对。所以首先你要做的是声明一个服务窗口。对吧?停止写入数据库。您可以允许读,但禁止写。便便。设置集群恢复到新集群。对吧?只指向主服务器,因为它会自动将所有内容发送到副本,然后指向新的副本。
是的,我也不知道。所以我认为,如果有什么事情,我不认为它应该是特别的,它应该是你应该抛弃和恢复。但是这里有一些很棒的Jfrog人,我相信他们会知道数据里面有什么。我只是运行数据库,我们不看里面有什么。
你也做过同样的事?这就是你会做的。他做到了。所以如果你有问题,忘了Jfrog的人,直接问这个人。
他应该得到一张贴纸,对吧?
是的,他要做的所有工作都有一张贴纸。你会得到一张贴纸。感谢你主动回答每个人的问题。你太好了。天啊,你是最棒的。
好了,还有问题吗?是吗?
我如何将它们连接起来?谢谢你!
好吧,这是我挑起来的。你可以看到我的公司开始制定懒散的文化指南。你们公司有多少人懈怠?有多少人认为这是公司内部争论的根源?因为有人讨厌它,有人喜欢它。这就是我们要做的。
好的,我们在桌面。我想我已经…是的,人工单YAML。这是我修补的YAML文件然后我设置它的方式是如果你到下面这里。不,不是在NGRES中,那是。Artifactory,好的,我们正在设置Artifactory。哦,它在哪里?走,走,走,走,走,走。好吧。所以…不,不是这样的。它在哪里?在Postgres之后,有数据存储资源。2022世界杯阿根廷预选赛赛程我给了它更多的内存,你知道的。 There’s NGINX, what where did the database stuff go? There’s this thing… you guys should’ve been like, “There’s this thing called Postgres.”
好的,网络策略。这不是正确的。16.开始吧。首先我们要对视频中的人做的是,我要讲整个开始部分。我必须设置enable defaults,因为这里的Postgres节,是Artifactory自带的默认设置。所以你会说:“好吧,我不想要那个。”对吧?
所以我可以删掉这个,后面的整个部分,因为所有的东西都属于包含的部分。这里有另一个叫做数据库的部分,这里我写PostgresQL。然后是主机,我指向Kubernetes集群内的服务名称。对吧?我想使用名称而不是IP,我的意思是,我可以使用IP,但服务名称更好。那个服务名总是会路由到那个IP地址,这很好。
史蒂夫,我是怎么跟你说这些问题的?他们应该在哪里?
他们来了,因为我要给他们看东西。
你可以给他们看看楼上的东西。
我们还有时间。我没有超时。
不,你是,从现在起你是。
好了,再给我一分钟。那么最后一件事,因为这是我想展示的最后一件事这是正常的东西。但这里,这是Kubernetes的另一个伟大的部分,我的集群实际上是在我旋转Operator时制作的秘密。群集,操作员为用户名和密码保密。所以,只要我这么说,只要我一直叫我的簇,a簇,这就会一直有效。明白了吗?因为服务名称是相同的,这是相同的。
如果我改变集群的名字,那么我需要改变这个名字,这个名字,这个名字,还有那个名字然后一切都会正常工作。但是,再看一遍,普通的操作平面。它只是改变YAML文件和引用的秘密,它不是一些奇怪的一切在UNIC套接字和我不想知道的事情。
好的,谢谢大家。现在我们也会回答那里的问题[听不清00:40:56]。
是的。
