下一级Artifactory和x射线HA数据与PostgreSQL容器-史蒂夫Pousty, Crunchy数据

你在Kubernetes中运行Artifactory或Xray,你想知道如何让它背后的PostgreSQL成为高可用性(HA)。本讲座将首先讨论在容器中运行RDBMS时的一些注意事项。在那之后,剩下的演讲将会演示:
1.使用Kubernetes操作符启动HA PostgreSQL
2.将Artifactory或Xray连接到DB集群中
3.扩展JFrog二进制文件和数据库。

在本讲座结束时,您将看到在Kubernetes中使用HA PostgreSQL运行HA JFrog是多么简单和直接。

视频记录

好吧。那就是我。Crunchy Data是我工作的公司。我们是Postgres人。你可以在那里找到我,史蒂夫。这是零分,因为我就是这样的精英。只是想让你知道……我们进行的时候我会让你知道的。每个人都准备好了吗?

所以这个议程很重要。准备好写下来了吗?我们将讨论一下DevOps和Kube……Kubernetes。你们中有多少人已经在使用Kubernetes?三个,四个,差不多半个房间。五个好的。

你们中有多少人是Ops的?如果你是行动组的,请举手?我要看……

好的。你们中有多少人是真正的开发人员?然后那些没有举手的人,你是什么。你是DevOps或者你是介于两者之间的或者你是系统管理员,因为没有其他人会这样做?你是那种人吗?

你可能会说:“我是一名开发人员,但是没有人在做……好吧。”好。

然后是演示。这就是整个议程。有很多规则。为这些做好准备吧。你会问问题。我知道他们说你可以等,你应该等到最后。我的意思是,我可能会打断你因为我只有45分钟的时间。所以我可能会说,“好吧,我们待会儿在房间里谈吧。”但我喜欢在Sub Talk期间提出问题,因为如果人们迷失了方向或遇到了什么事情,当我们在进行演示时,会有停顿时间,这也是提问的好时机。好吗?

另一部分就是玩得开心。这是整个。这是仅有的两条规则?所以不要太认真。

那么为什么是Postgres呢?现在在真正的谈话中。为什么PostgreSQL ?我说真的,你们都很聪明。你们现在可能都在用Postgres。这是真的吗?谁没有使用Postgres ?正确的。完全正确。所以我不需要说服你使用Postgres,对吧?

我的意思是,即使是JFrog的东西也默认带有Postgres。所以这是一个很自然的组合。但为什么是Kubernetes?教室里只有一半的人说你们在用Kubernetes。在我加入Crunchy之前,我在红帽公司,在OpenShift团队工作,负责红帽公司Kubernetes的发行。所以你会听到一些为什么我认为Kubernetes实际上是一个好东西。因为主要原因是因为这是你真正想要研究的抽象层次。对吧?

我们大多数从事开发工作的人,特别是那些既是开发人员又是系统管理员的人,你们肯定不是在你们所工作的抽象级别上工作,对吧?你正在阅读如何安装rpm,做所有这些奇怪的配置,玩网络设置,玩存储,所有这些你实际上不知道的事情,要么知道很多,要么想花很多时间去做。所以我要讲讲为什么我们喜欢。请Steven详细解释一下为什么这是正确的抽象层次,对吧?

首先,它与容器一起工作。所以你可以在没有Kubernetes的情况下使用容器,但你们中有多少人使用过三到四个以上的容器来编排它们?有人试过吗?不,因为你很聪明,对吧?

一旦您不再运行单个容器,它就会很快偏离正轨,试图让所有东西都运行起来。所以Kubernetes允许这样做。但是容器的另一个好处是,红帽公司的人致力于SE Linux并将其放入内核中,当我和他一起参加第一届DockerCon时,他说他不关心容器的所有其他东西。他喜欢container的原因是,我们终于可以以应该交付的方式交付软件了。这不仅仅是在你的机器上放置比特。对吧?这不仅仅是,“这是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集群的配置管理。可能还有其他一些我不知道的,我已经一年多没有进入这个生态系统了,所以现在一切都不一样了。

软件供应商可以进行自我意识包装。所以,除了交付容器之外,你还可以创建一个运算符。其中包括容器,但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时,我们在同一个级别上工作,我不需要从Source或rpm学习如何安装Postgres。然后是配置和配置文件的位置。我也不需要对Artifactory做同样的事情,从rpm安装并了解它的配置文件是什么以及它存储秘密的位置。都一样。因此,一旦你学会了如何在Kubernetes中安装和管理软件,你所有的软件都会以同样的方式安装。这就是我所说的抽象层次。

最后,因为你们很多人都和开发人员一起工作,要么你支持他们,要么你就是你自己,Kubernetes给了你一个非常清晰的关注点分离。最后这句话是我的治疗师说的,明确的界限,无限的可能性。对吧?如果你不记得这整个演讲的其他内容,这就是我想让你记住的,因为它会让你成为一个更好的人。这会让世界变得更美好。想想组织中发生冲突的地方,大多数发生在哪里?这是大多数人……两个群体认为他们拥有这个东西,他们应该决定发生什么。想想当你和你的伴侣,你的配偶,你的孩子吵架时,通常是和你的孩子吵架他们不明白界限在那里他们认为他们可以在那里。但这是一个有共同边界的地方,不清楚谁负责。

Kubernetes所做的最好的部分是它把边界弄得非常清楚。维护集群的人,可以设置集群可以指定容器之类的东西,而开发人员可以设置环境变量,可以设置秘密,可以设置环境变量,可以部署东西,就这些。对吧?你不能进去接触网络。你不会去改变版本和容器。对吧?负责的人说,这是经过批准的软件,开发人员实际上并不关心,因为它实际上是为他们运行的,他们只需要安装东西。这就是为什么Box的人也给了Kubernetes很多很好的理由。最后一点是向开发人员推销Kubernetes的一个很好的理由。因为他们可以做自己想做的事而不用在软件上瞎折腾。

好了,这就是我们的介绍。关于介绍有什么问题吗?所有不用Kube的人都要回家了从现在开始都要用Kube,对吧?好的,很好。

等等,最重要的信息是什么?

谢谢你,界限分明无限可能。把它应用到你的生活中。我告诉你,我离婚了,现在我和一个人在一起六年了,这条信息是你能得到的关于婚姻或关系幸福的最好信息之一。

好的,场景是Artifactory HA,对吧?所以,就像我对那些后来进来的人说的,我在一开始说的最初的标题是Artifactory或x射线,都是一样的。基本上,JFrog处理它的方式是,我们做应用软件,Artifactory, XRay,你给我们一个数据库,我们可以给你一个,但如果你想要高可用性,那就由你决定。这两个过程都是一样的。你启动一个高可用性数据库,然后插入它,对吧?

今天我只展示Artifactory,但是x射线的过程是一样的。我不知道是不是为了他们全新的元数据套件。我在之前疯狂地发短信(听不清00:09:17)说:“嘿,嘿,嘿。这对整个大套房都适用吗?”但他一直没有回答。

因此,您可以依靠Artifactory来完成关键任务。对吧?如果开发人员不能得到他们的软件包,他们会有多高兴?

谢谢你!这个问题不难回答。事实上,我有一张贴纸给你。志愿服务,是的。不客气哦,抱歉。

所以,问题是,正如我刚才说的,您不仅希望服务器是HA的,而且还需要数据是HA的。你们中有多少人的数据库在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。非常复杂的前端,当我在那里工作时,我总是抱怨。这是我们的项目或名称空间。里面有什么?没什么。准备好了吗?我们走吧。

这是Helm图表,我一会儿会给你们看。让我们开始吧。我们需要做的第一件事是,我已经在Postgres命名空间中安装了Postgres操作符。Postgres Operator基本上就像一个小的休息服务,它知道如何管理安装和监视集群。我不想把它暴露给外界我要设置一些端口转发来和它通信。否则我就没法跟它说话了。

这是我的命令。是的,你看不到这个,没关系,因为我会在这里展示。够大了吗?是吗?好的。我在这里所做的就是设置端口转发到Pod。对于那些不太懂Kubernetes的人来说,你可以把Pod想象成一个容器。好吧,它不止于此,但在这种情况下它是一个容器。我们刚刚设置了端口转发到8,4,4,3。这样我们就能和接线员谈谈了。

现在,这个还够大吗?好的。让我们启动一个Postgres集群。我之所以有一份讲稿,是因为没人喜欢看主持人打错字,对吧?我先打一下,然后我们再谈。所以,我在这里说的是,“嘿,PGO是我们的Operator命令行。”我们说:“创建一个集群,命名为集群。”因为我真的很机智。“我不想要靠背。”里面是备用的,别放进去。 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-Cluster本身就是主集群。够大吗?不,没人能,后面的同学能看到吗?

是的,没有。你和我年龄相仿,而且你没戴眼镜。怎么样?好点了吗?好的。

于是主人转了起来。主程序正在运行,请注意副本没有旋转起来。注意它是浅蓝色的。你能看到吗?我点一下。看到它的浅蓝色了吗?哦。还是浅蓝色,很好。它是浅蓝色的,这意味着我们已经拉下了容器,但它还没有准备好提供内容。所以主色调是浅蓝色,然后变成深蓝色。 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-cluster pod,不是A-cluster- fpyz pod明白了吗?像泥浆一样相对清晰吗?不是泥。 Not as mud? Good, thank you.

好了,我们已经启动了集群。现在,我们要旋转Artifactory。再一次,这就是我所说的在Kubernetes的世界里事情真的很容易。所以我打开我的脚本,首先我发现,Artifactory有一个Helm图表。太棒了。我已经添加了Helm Repo和Helm命令行,现在我只是要安装图表。所以,我们本来打算做HA Artifactory,但不知怎么的,我们没能让授权团队及时给我正确的授权。所以我可以启动HA,我只是不能及时获得许可证。所以…

我们只展示单曲,但HA也是一样的。对不起。好,我粘贴一下,然后看看会发生什么。

我们说。你可以说upgrade & dash - install。也就是说如果有,就升级,否则就安装。然后,剩下的这些东西说,“命名为Artifactory Single,使用Jfrog Artifactory Helm Chart,将其放入Artifactory名称空间,我有一个YAML文件,我想让你读取所有内部配置。”对吧?我没有给你们看。我们能准时到吗?这是什么意思?

还剩22分钟?如果我们最后还有时间,我会给你们看YAML文件,我这里有。我不知道如何在gedit中把它们变大,但我有YAML文件,我会弄清楚如何把字体变大,如果他们需要,我们可以检查一下。让我从头到尾讲一遍。实际上,Artifactory需要一段时间才能讲出来。

什么?

是啊,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门前的代理。

你不用想,对吧?您可能读过,“哦,我真的应该在某个东西后面代理Artifactory。”你会想,“哦,我不想处理那个连接器,我不想学习另一个软件包。”Jfrog的专家说,[听不清00:21:01],“我要构建一个Helm Chart,它能正确地完成所有的事情,为你配置Artifactory和NGINX。不是启动,而是真正启动的时候。你只要安装舵图,我就会为你创造奇迹。”

所以它起作用了。所以我们成立了Artifactory,是吗?

掌舵图知道该从哪里下手。

但真的是这样吗?

不,这些都在集群中运行,在谷歌中运行。这是我在谷歌中设置的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库。好了,我们做完了。太棒了。听着,我们所有的仓库都准备好了。

我们来看泛型局部。哦,我现在不能和接线员通话。让我们回顾一下。因为如果我们有时间,我会在最后把它们都清理干净,让你们知道删除所有东西是多么容易。我写到这里。重做端口前进。好的。

这里输入我的密码。你们以前见过这个屏幕吗?我需要把它变大还是每个人都知道我在做什么?大家都知道我在做什么吗?好吧,因为我只是想上传一些普通的东西。

让我们继续,上传一些通用的东西。我的主目录里有一些东西。让我们清除这个屏幕。粘贴。然后文件的名字是helloswup。txt,你们对我的创意感到惊讶,不是吗?在集群和helloswamp之间。上传了一个文件,我们去看看。我们到这里。泛型本地,这是我们的文件。好了,我向所有人证明了这个Artifactory存储库是有效的吗? Okay.

准备好了吗?灾难的时间。我们有。我刚刚建立了。首先,这比你通常建立Artifactory集群快吗?和容易吗?我希望我已经证明了为什么要转到Kubernetes,没有更多的讨论了,对吧?因为这对我来说太神奇了。好了,现在让我们继续,向您展示为什么应该运行HA。

现在我回到了Kubernetes集群,我们将进行概述。我们说过,这个Pod, a星系团是我们的主,对吧?如果我们再看一下这个名字,这里我要看一下Pod,它就像破折号669等等等等等等。这个和这个是一样的。所以到达花苞的服务路线,就是我们的主人,对吧?主服务器的服务名称是A-cluster。应该和我们的项目名字一样吧。

现在,我不打算做一些Kubernetes的杀戮来作弊。对吧?我实际上要做的是测试这里所有人的知识。我如何杀死一个容器?在容器内?这只是容器知识。

很好。给你的贴纸。所以基本上你在整个主进程中结束,容器说,“哦,我的主进程死了,我需要重新开始。好吧,重新启动容器。”如果没有有状态的东西,这很好,但数据库是有状态的吗?的确如此。所以你不…,我先做这个。PS-AUXW post的过程。我能把这个变小一点吗,这样我就能看到发生了什么?我们再做一次。我要终止这个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完全消失,它不会交换服务。 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.

所以操作员知道,“不,呃,我必须等到那个东西完全死了,然后我再切换服务。”这就是我们的新主人。它用这个作为我们的主函数。现在它应该已经转出了另一个复制品。对吧?这是我们的旧的,现在是我们的主人。这是我们的复制品。所以我们有....我们不仅快速地实现了故障转移,而且我们还有另一个副本,以防再次失败。

因此,为了证明它仍在运行,我将刷新这个页面。它还在运行。好吧?有几个方块响了?零。我要做多少工作,除了杀死花苞让它失败?零。对吧?所以对于那些人,尤其是像我的朋友一样不知不觉成为系统管理员的人,我想你们也是。你不就是个半明半暗的系统管理员吗? 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集群是多么容易。这样当他们真正在做开发工作时,他们就能看到开发的感觉。他们实际上可以从副本中读取,并将其写入主文件。从一开始就构建正确的体系结构模式。因为一旦你成为了集群中的Operator,任何人都可以使用它。

如果我想添加。现在我想添加一个连接池。我要添加PgBouncer。我只需要在集群中创建PgBouncer。大家都知道PgBouncer是什么吗?它是一个服务连接池,而不是应用程序中的连接池。我先展示一下,然后再解释。因为那样你就会说,“哦,他只是在说话,而它一直在旋转。”它已经在那里了。对吧?

它是作为连接池运行的服务器。如果你把连接池放到应用中你想改变连接池的任何东西你需要做什么呢?你必须暂停你的应用,这可能不是一个好主意。有了这个,你实际上可以在你的应用程序之外有连接池。你可以为副本创建一个bouncer,如果你想,也可以为读写创建一个bouncer。好吧?你甚至不需要弹跳" bouncer "来让它做连接设置。你可以对它进行rest调用让它在运行中改变配置。

好了,这就是添加的简单程度。或者你可以加多个,然后把它们连在一起。但问题是,我要看多少说明书才能做到这一点呢?一个。它说了如何添加bounce PGO,创建bouncer。一旦我记住了,我就做完了。这就是算子的美妙之处。好吗?

如果你也在应用中使用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.

现在如果我回到这里,我要把它缩小一点,因为你不需要读它,你可以看看发生了什么。所以,你可以看到它已经杀死了几个副本,它正在杀死master,它正在杀死master,它正在杀死其他的副本。他们都走了。我的数据库没了。完全消失了。为了证明这一点,让我们重新加载Artifactory,这就是我们现在使用Artifactory的地方。对吧?如果我回到这里,看一下存储,你可以看到大部分存储都被回收了。Kubernetes在时间和回收存储方面有点奇怪,但最终都将被回收。看,它只是去掉了另一个存储空间。 Should we get rid of our Artifactory now too? How about we do that? Let’s do that.

所以我们说头盔清洗,我想我叫它什么来着,Artifactory Single?Artifactory Single,我认为这是正确的命令。不。哦,头盔…,抱歉,头盔删除。现在如果我再回到我的集群,我们又回到了最初的空项目。

这就是为什么Kubernetes、Operators和Helm图表这么棒的原因?如果你想玩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的所有东西。”好吗?

然后,还有幻灯片如果你想回到幻灯片上。这就是你联系我的方式。

现在,哦,在最后的甲板上,如果你决定要脆脆的东西,我不会谈论它,但它谈论的是作为一个人的脆脆。好吧?或者作为一个公司。不太好,我很脆,开玩笑的。这是一家相当大的公司。

有问题吗?

我知道,但我们还有时间。

如果我们没时间了…

现在?我们能在这里回答吗,因为我可以把它放到视频里?爸爸,请吗?

我们可以投票表决吗?

是的。有多少人想在此时此刻回答问题?有多少人想等我们去另一个房间?所以没有人。好吧,多数派获胜。因为其他人都说:“我真的很想早点去,这样我就可以给自己买点零食了。”

你想走就走吧,我们谈完了。所以就是提问。

是吗?

好的,问题是,我已经用一个Postgres建立了Artifactory,实际旋转这个然后插入它有多容易?

我不知道你是怎么建立Artifactory的。

你也用了头盔?我不是Helm专家,我认为你可以改变你的PGO YAML指向新的集群。

哦,是的,是的,是的。首先你要做的是声明一个服务窗口。对吧?停止向数据库写入数据。你可以允许读,但是停止写。排泄。设置集群恢复到新集群。对吧?只发送给master,因为它会自动将所有内容发送给副本,然后指向新的副本。

是的,我也不知道。所以我假设,如果有什么东西,我认为它不应该是特别的,它应该是你应该丢弃和恢复的。但是这里有一些很棒的Jfrog人,我相信他们知道这些数据里面有什么。我只查数据库,不看里面有什么。

你也做过同样的事?这就是你会做的。他做到了。所以如果你有问题,忘了Jfrog的人,问这个人就好了。

他应该得到一张贴纸,对吧?

是啊,他要做的所有工作都能得到一张贴纸。你会因此得到一张贴纸。自愿回答每个人的问题。你太好了。天啊,你是最棒的。

好的,还有其他问题吗?是吗?

如何将它们连接起来?谢谢你!

好了,我开始了这个。你可以看到我的公司开始在文化上引导人们放松。你们公司有多少人偷懒?有多少人认为这是公司内部争论的根源?因为有些人讨厌它,有些人喜欢它。这就是我们要做的。

好的,我们在桌面上。我想我有,对,Artifactory Single 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.开始吧。我们要对视频中的人做的第一件事,我要看整个开头部分。我必须设置启用默认值,因为这里的Postgres节,这是Artifactory自带的默认值。所以你会说,“是的,我不想要那个。”对吧?

所以我可以删除这个,后面的整个部分,因为所有这些都属于被包含的部分。这里有另一个部分叫做数据库,我在这里写的是PostgresQL。然后是主机,我指的是Kubernetes集群中的服务名称。对吧?我想使用名称而不是IP,我的意思是,我可以使用IP,但服务名称更好。这个服务名总会路由到那个IP地址,这很好。

史蒂夫,关于问题我是怎么跟你说的?它们应该在哪里?

他们来了,因为我要给他们看东西。

你可以在楼上给他们看。

我们还有时间。我没有超时。

不,你是,从现在开始是。

好的,再等一分钟。最后一件事,因为这是我最后想说的正常的东西。但是这里,这是Kubernetes的另一个伟大的部分,我的集群实际上在我旋转Operator时制造了秘密。集群…操作员为用户名和密码设置了秘密。所以,只要我这么说,只要我一直称我的集群为a集群,这个方法就会一直有效。明白吗?因为服务名是一样的,这个也是一样的。

如果我改变了集群的名称,那么我需要改变这个名称,这个名称,这个名称和那个名称,然后一切都将正常工作。但是,再看一遍,普通的操作飞机。它只是改变YAML文件和引用秘密,它不是一些奇怪的东西在UNIC套接字和我不想知道的东西。

好的,谢谢大家。现在我们也去回答问题[听不清00:40:56]。

是的。

在云中免费试用JFrog !