Pradeep Kumar 发布的文章

GitLab 是一个开源平台,提供了强大且功能丰富的解决方案,用于管理仓库、问题、CI/CD 管道等。如果你是 Ubuntu 22.04 或 20.04 用户,并且想要设置自己的 GitLab 实例来简化你的 DevOps 工作流程,那么你来对地方了。

本分步指南将引导你完成 Ubuntu 22.04 或 20.04 上 GitLab 的安装过程。GItlab 提供企业版(Gitlab EE)和社区版(Gitlab CE)。在这篇文章中,我们将介绍社区版。

先决条件:

  • 运行 Ubuntu 22.04 或 20.04 且具有 SSH 访问权限的虚拟或专用服务器。
  • 静态主机名(gitlab.linuxtechi.net
  • 具有管理员权限的 Sudo 用户
  • 2GB 内存或更多
  • 2 个或更多 vCPU
  • 互联网连接

1、更新系统包

让我们首先更新软件包列表并将任何现有软件包升级到最新版本。

$ sudo apt update
$ sudo apt upgrade -y

应用更新后重新启动系统。

$ sudo reboot

2、安装依赖项

GitLab 需要一些依赖项才能正常运行。使用以下命令安装它们:

$ sudo apt install -y curl openssh-server ca-certificates postfix

在 postfix 安装过程中,会出现一个配置窗口。选择 “Internet Site”并输入服务器的主机名作为邮件服务器名称。这将允许 GitLab 发送电子邮件通知。

选择 “Internet Site”,然后选择 “OK”。

检查系统的主机名并选择 “OK”。

3、添加 GitLab Apt 存储库

现在,我们将添加 GitLab 仓库,运行以下 curl 命令。它将自动检测你的 Ubuntu 版本并相应地设置仓库。

$ curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

4、安装 Gitlab

运行以下命令在你的 ubuntu 系统上自动安装和配置 gitlab-ce,将服务器的主机名替换为你的设置,

$ sudo EXTERNAL_URL="http://gitlab.linuxtechi.net" apt install gitlab-ce

上述命令成功执行后,我们将得到如下输出。

上面的输出确认 GitLab 已成功安装。gitlab web 界面的用户名是 root,密码存储在 /etc/gitlab/initial_root_password

注意:如果你的 ubuntu 系统上启用了操作系统防火墙,那请允许 80 和 443 端口。

$ sudo ufw allow http
$ sudo ufw allow https

5、访问 GitLab Web 界面

安装并配置 GitLab 后,打开 Web 浏览器并输入服务器的 IP 地址或主机名。

http://<Server-IP-Address-or-Hostname>
  • 用户名:root
  • 密码:从 /etc/gitlab/initial_root_password 获取密码

点击“ 登录 Sign in ”。

很好,上面确认我们已经成功登录 Gitlab Web 界面。

目前我们的 GitLab 服务器运行在 http(80)协议上,如果你想为你的 GitLab 启用 https,请参考以下步骤。

6、为 GitLab Web 界面设置 HTTPS

为提高安全性,可使用自签名证书或 Let's Encrypt 为 GitLab 实例配置 HTTPS。Let's Encrypt 只适用于互联网上有 A 记录的公有域。但在本例中,我们使用的是私有域,因此将使用自签名证书来确保 GitLab 的安全。

现在,让我们创建以下文件夹并使用 openssl 命令生成自签名证书:

$ sudo mkdir -p /etc/gitlab/ssl
$ sudo chmod 755 /etc/gitlab/ssl

使用以下 openssl 命令生成私钥:

$ sudo openssl genrsa -des3 -out /etc/gitlab/ssl/gitlab.linuxtechi.net.key 2048

输入密码并记住它。

使用以下命令创建 CSR:

$ sudo openssl req -new -key /etc/gitlab/ssl/gitlab.linuxtechi.net.key -out /etc/gitlab/ssl/gitlab.linuxtechi.net.csr

从密钥中删除密码串,依次执行以下命令:

$ sudo cp -v /etc/gitlab/ssl/gitlab.linuxtechi.net.{key,original}
$ sudo openssl rsa -in /etc/gitlab/ssl/gitlab.linuxtechi.net.original -out /etc/gitlab/ssl/gitlab.linuxtechi.net.key
$ sudo rm -v /etc/gitlab/ssl/gitlab.linuxtechi.net.original

创建证书文件:

$ sudo openssl x509 -req -days 1460 -in /etc/gitlab/ssl/gitlab.linuxtechi.net.csr -signkey /etc/gitlab/ssl/gitlab.linuxtechi.net.key -out /etc/gitlab/ssl/gitlab.linuxtechi.net.crt

使用下面的 rm 命令删除 CSR 文件:

$ sudo rm -v /etc/gitlab/ssl/gitlab.linuxtechi.net.csr

设置密钥和证书文件的权限:

$ sudo chmod 600 /etc/gitlab/ssl/gitlab.linuxtechi.net.key
$ sudo chmod 600 /etc/gitlab/ssl/gitlab.linuxtechi.net.crt

Gitlab 服务器的所有重要配置均由文件 /etc/gitlab/gitlab.rb 控制,因此编辑此文件,搜索 external_url 并添加 https://gitlab.linuxtechi.net

$ sudo vi /etc/gitlab/gitlab.rb
----------------------------------------------------------
external_url 'https://gitlab.linuxtechi.net'
----------------------------------------------------------

保存并退出文件,使用下面的命令重新配置 gitlab,以便其 Web 界面可以使用 HTTPS。

$ sudo gitlab-ctl reconfigure

成功执行上述命令后,你的 GitLab 界面应该可以通过 HTTPS 协议访问,在我的例子中,URL 为:https://gitlab.linuxtechi.net/

当你第一次访问它时,它会说你的连接不安全,点击“接受风险并继续”。

结论

恭喜! 你已在 Ubuntu 22.04 或 20.04 系统上成功安装 GitLab。随着 GitLab 的启动和运行,你现在可以创建仓库,与你的团队协作,并通过 GitLab 令人印象深刻的功能增强你的开发工作流程。享受无缝版本控制、持续集成等,一切尽在你的掌控之中!

(题图:MJ/c6a3e27e-fe58-4184-b133-9e9c67224316)


via: https://www.linuxtechi.com/how-to-install-gitlab-on-ubuntu/

作者:Pradeep Kumar 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Kubernetes 是一个开源容器编排平台,已成为大规模管理容器化应用的首选解决方案。虽然 Kubernetes 提供了强大的命令行工具来管理集群,但有时可视化界面可以使监控和管理部署变得更加容易。Kubernetes 仪表板是一个基于 Web 的用户界面,可让你可视化 Kubernetes 集群并与之交互。

在这篇博文中,我们将逐步引导你完成安装和访问 Kubernetes Dashboard 的过程,使你能够简化 Kubernetes 管理任务。

先决条件:

在安装 Kubernetes Dashboard 之前,请确保你有一个正在运行的 Kubernetes 集群并具有必要的管理访问权限。

安装 Kubernetes 仪表板

为集群安装 Kubernetes 仪表板的简单方法是通过 Helm Chart。Kubernetes 仪表板现在依赖于 cert-manager 和 nginx-ingress-controller。幸运的是,可以使用 Helm Chart 自动安装这些依赖项。但是,如果你已经安装了这些组件,则可以在安装 Chart 时通过设置标志 –set=nginx.enabled=false–set=cert-manager.enabled=false 来禁用它们的安装。

事不宜迟,让我们进入安装步骤。

1)安装 Helm

使用终端或命令提示符访问集群的主节点。如果没有安装,请安装 helm。运行以下命令。

$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh

2)添加 Kubernetes 仪表板 Helm 仓库

运行以下 helm 命令来添加仪表板仓库:

$ helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
$ helm repo list

3)安装 Kubernetes 仪表板

要使用 helm 安装 Kubernetes 仪表板,请运行以下命令:

$ helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard

上面的输出确认仪表板已部署在 Kubernetes-dashboard 命名空间中。因此,要访问仪表板,请运行:

$ kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard-nginx-controller 8443:443

现在,打开运行上述命令的系统的 Web 浏览器,输入以下 URL:

https://localhost:8443

点击“ 接受风险并继续 Accept the Risk and Continue ”。

正如你在上面看到的,我们需要一个令牌才能登录。因此,让我们在下一步中生成所需的令牌。

4)为 Kubernetes 仪表板生成令牌

再打开一个到主节点的 SSH 会话,创建一个服务帐户并使用以下 yaml 文件分配所需的权限:

$ vi k8s-dashboard-account.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: admin-user
  namespace: kube-system

保存并退出文件。

接下来通过运行以下命令创建服务帐户:

$ kubectl create -f k8s-dashboard-account.yaml
serviceaccount/admin-user created
clusterrolebinding.rbac.authorization.k8s.io/admin-user created
$

现在,为管理员用户生成令牌,运行:

$ kubectl -n kube-system  create token admin-user

复制此令牌并返回浏览器,将其粘贴到“ 输入令牌 Enter token ”字段中,如下所示:

点击“ 登录 Login ”。

5) 访问 Kubernetes 仪表板

当我们点击上面的“登录”时,我们将看到以下仪表板:

太好了,你现在已登录 Kubernetes 仪表板。以下是一些需要探索的关键特性和功能:

  • 集群概览:获取集群运行状况、资源利用率和运行 Pod 的概览。
  • 工作负载:查看和管理你的部署、副本集、有状态集和守护程序集。
  • 服务:监控和管理你的服务,包括负载均衡器和外部端点。
  • 配置:探索你的配置映射、密钥和持久卷声明。
  • 存储:管理持久卷和存储类。
  • 命名空间:在命名空间之间切换以查看和管理不同项目或团队的资源。

这就是这篇文章的全部内容,我希望你发现它有用且内容丰富。请在下面的评论部分发表你的疑问和反馈。

(题图:MJ/1bd0efb0-d4ee-4c8b-854a-49dbf38c5dd7)


via: https://www.linuxtechi.com/how-to-install-kubernetes-dashboard/

作者:Pradeep Kumar 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在这篇文章中,我们将向你展示如何在 Kubernetes(k8s)集群中设置动态 NFS 配置。

Kubernetes 中的动态 NFS 存储配置允许你按需自动为 Kubernetes 应用配置和管理 NFS(网络文件系统)卷。它允许创建持久卷(PV)和持久卷声明(PVC),而无需手动干预或预配置存储。

NFS 配置程序负责动态创建 PV 并将其绑定到 PVC。它与 NFS 服务器交互,为每个 PVC 创建目录或卷。

先决条件

  • 预装 Kubernetes 集群
  • 具有 Kubernetes 集群管理员权限的普通用户
  • 互联网连接

事不宜迟,让我们深入探讨步骤:

步骤 1、准备 NFS 服务器

就我而言,我将在 Kubernetes 主节点(Ubuntu 22.04)上安装 NFS 服务器。登录主节点并运行以下命令:

$ sudo apt update
$ sudo apt install nfs-kernel-server -y

创建以下文件夹并使用 NFS 共享它:

$ sudo mkdir /opt/dynamic-storage
$ sudo chown -R nobody:nogroup /opt/dynamic-storage
$ sudo chmod 777 /opt/dynamic-storage

/etc/exports 文件中添加以下条目:

$ sudo vi /etc/exports
/opt/dynamic-storage 192.168.1.0/24(rw,sync,no_subtree_check)

保存并关闭文件。

注意:不要忘记更改导出文件中适合你的部署的网络。

要使上述更改生效,请运行:

$ sudo exportfs -a
$ sudo systemctl restart nfs-kernel-server
$ sudo systemctl status nfs-kernel-server

NFS-Service-Status-Kubernetes-Master-Ubuntu

在工作节点上,使用以下 apt 命令安装 nfs-common 包。

$ sudo apt install nfs-common -y

步骤 2、安装和配置 NFS 客户端配置程序

NFS 子目录外部配置程序在 Kubernetes 集群中部署 NFS 客户端配置程序。配置程序负责动态创建和管理由 NFS 存储支持的持久卷(PV)和持久卷声明(PVC)。

因此,要安装 NFS 子目录外部配置程序,首先使用以下命令集安装 helm

$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh

运行以下命令来启用 helm 仓库:

$ helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner

使用以下 helm 命令部署配置程序:

$ helm install -n nfs-provisioning --create-namespace nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner --set nfs.server=192.168.1.139 --set nfs.path=/opt/dynamic-storage

helm-install-nfs-provisioning-kubernetes-cluster

上面的 helm 命令将自动创建 nfs-provisioning 命名空间,并安装 NFS 配置程序的容器荚/部署、名称为 nfs-client 的存储类,并将创建所需的 rbac。

$ kubectl get all -n nfs-provisioning
$ kubectl get sc -n nfs-provisioning

kubectl-get-all-nfs-provisioning-kubernetes-cluster

完美,上面的输出确认了配置程序容器荚和存储类已成功创建。

步骤 3、创建持久卷声明(PVC)

让我们创建 PVC 来为你的容器荚或部署请求存储。PVC 将从存储类 nfs-client 请求特定数量的存储:

$ vi demo-pvc.yml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: demo-claim
  namespace: nfs-provisioning
spec:
  storageClassName: nfs-client
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Mi

保存并关闭文件。

PVC-Yaml-Dynamic-NFS-Kubernetes

运行以下 kubectl 命令以使用上面创建的 YML 文件创建 PVC:

$ kubectl create -f demo-pvc.yml

验证 PVC 和 PV 是否创建:

$ kubectl get pv,pvc -n nfs-provisioning

Verify-pv-pvc-dynamic-nfs-kubernetes-cluster

太好了,上面的输出表明 PV 和 PVC 创建成功。

步骤 4、测试并验证动态 NFS 配置

为了测试和验证动态 NFS 配置,请使用以下 YML 文件启动测试容器荚:

$ vi test-pod.yml
kind: Pod
apiVersion: v1
metadata:
  name: test-pod
  namespace: nfs-provisioning
spec:
  containers:
  - name: test-pod
    image: busybox:latest
    command:
      - "/bin/sh"
    args:
      - "-c"
      - "touch /mnt/SUCCESS && sleep 600"
    volumeMounts:
      - name: nfs-pvc
        mountPath: "/mnt"
  restartPolicy: "Never"
  volumes:
    - name: nfs-pvc
      persistentVolumeClaim:
        claimName: demo-claim

Pod-Yml-Dynamic-NFS-kubernetes

使用以下 kubectl 命令部署容器荚:

$ kubectl create -f test-pod.yml

验证 test-pod 的状态:

$ kubectl get pods -n nfs-provisioning

Verify-Test-Pod-Using-NFS-Volume-Kubernetes

登录到容器荚并验证 NFS 卷是否已安装。

$ kubectl exec -it test-pod -n nfs-provisioning /bin/sh

Access-Dynamic-NFS-Inside-Pod-Kubernetes

太棒了,上面容器荚的输出确认了动态 NFS 卷已安装且可访问。

最后删除容器荚和 PVC,查看 PV 是否自动删除。

$ kubectl delete -f test-pod.yml
$ kubectl delete -f demo-pvc.yml
$ kubectl get pv,pvc -n  nfs-provisioning

Delete-Pod-PVC-Dynamic-NFS

这就是这篇文章的全部内容,希望对你有所帮助。请随时在下面的评论部分发表你的疑问和反馈。

(题图:MJ/75dae36f-ff68-4c63-81e8-281e2c239356)


via: https://www.linuxtechi.com/dynamic-nfs-provisioning-kubernetes/

作者:Pradeep Kumar 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

技术兄弟们,大家好,在这篇文章中我们将介绍如何在 Ubuntu 22.04 中安装和使用 Wireshark。

Wireshark 是自由开源的、跨平台的、基于 GUI 的网络数据包分析器,可用于 Linux、Windows、MacOS、Solaris 等。它实时捕获网络数据包并以人类可读的格式呈现它们。它使我们能够监控微观层面的网络数据包。它还有一个名为 tshark 的命令行程序,它执行与 Wireshark 相同的功能,但通过终端而不是通过 GUI。

Wireshark 可用于网络故障排除、分析、软件和通信协议开发,也可用于教育目的。Wireshark 使用名为 pcap 的库来捕获网络数据包。

Wireshark 的功能

  • 支持检查数百种协议
  • 能够实时捕获数据包并保存它们以供以后离线分析
  • 一些用于分析数据的过滤器
  • 捕获的数据可以动态压缩和解压缩
  • 支持多种数据分析文件格式,输出也可以保存为 XML、CSV、纯文本格式
  • 可以从以太网、WiFi、蓝牙、USB、帧中继、令牌环等多种接口捕获数据

先决条件

  • 预装 Ubuntu 22.04
  • 具有 sudo 权限的本地用户
  • 互联网连接

Wireshark 安装步骤

从 Ubuntu 仓库安装

Wireshark 包可在默认的 Ubuntu 仓库中找到,并且可以使用以下命令简单地安装。但你可能无法获得最新版本的 wireshark。

$ sudo apt update
$ sudo apt install wireshark

Apt-Command-Install-Wireshark-Ubuntu

选择 “Yes” 允许非超级用户使用 Wireshark 捕获数据包:

Allow-Non-SuperUsers-To-Capture-Packets-Wireshark-Ubuntu

安装成功后,访问 Wireshare UI。从“ 活动 Activities ”中搜索 “wireshark”,然后单击其图标。

Wireshark-UI-Ubuntu-Linux-Desktop

以上确认你的 Wireshark 安装已成功完成。

安装最新的版本

如果要安装最新版本的 Wireshark,我们必须使用以下 apt 命令启用官方 Wireshark 仓库:

$ sudo add-apt-repository ppa:wireshark-dev/stable
$ sudo apt update

现在,安装最新版本的 Wireshark,运行:

$ sudo apt install wireshark -y

安装 Wireshark 后,验证其版本:

$ wireshark --version

Wireshark-Version-Check-Ubuntu-Linux

要允许普通用户使用 Wireshark 使用和捕获数据包,请运行以下命令:

$ sudo dpkg-reconfigure wireshark-common

选择 “Yes” 并按回车键。

Allow-Regular-User-Use-Wireshark-Ubuntu

使用 usermod 命令将本地用户添加到 wireshark 组:

$ sudo usermod -aG wireshark $USER
$ newgrp wireshark

要使上述更改生效,请重新启动系统。

$ sudo reboot

使用 Wireshark 捕获数据包

启动 Wireshark,从“活动”->搜索 “wireshark”。

Access-Wireshark-Ubuntu-Desktop

单击 Wireshark 图标,

Choose-Interface-Wireshark-UI-Ubuntu

所有这些都是我们可以捕获网络数据包的接口。根据你系统上的界面,此页面可能会有所不同。

我们选择 “enp0s3” 来捕获该接口的网络流量。选择接口后,我们网络上所有设备的网络数据包开始填充(请参阅下面的截图):

Capturing-Packets-WireShark-UI-Ubuntu

第一次看到此页面时,我们可能会被此屏幕中显示的数据淹没,并且可能会想到如何整理这些数据,但不用担心,Wireshark 的最佳功能之一就是它的过滤器。

我们可以根据 IP 地址、端口号对数据进行排序/过滤,还可以使用源和目标过滤器、数据包大小等,还可以将 2 个或更多过滤器组合在一起以创建更全面的搜索。我们可以在“ 应用显示过滤器 Apply a Display Filter ”选项卡中编写过滤器,也可以选择已创建的规则之一。要选择预建过滤器,请单击“旗帜”图标,然后点击“应用显示过滤器”选项卡。

IP-Based-Filtering-WireShark-UI-Ubuntu

我们还可以根据颜色代码来过滤数据,默认情况下,浅紫色是 TCP 流量,浅蓝色是 UDP 流量,黑色标识有错误的数据包,要查看这些代码的含义,请单击“ 查看 View ”->“ 颜色规则 Coloring Rules ”,我们也可以更改这些代码。

Coloring-Rules-WireShark-Ubuntu

获得所需的结果后,我们可以单击任何捕获的数据包以获取有关该数据包的更多详细信息,这将显示有关该网络数据包的所有数据。

要停止捕获数据包,请单击红色停止按钮,然后将捕获的数据包保存到文件中。

Save-Captured-Packets-Wireshark-Ubuntu

总结

Wireshark 是一款非常强大的工具,需要一些时间来适应和掌握它,这篇文章将帮助你开始使用。请随时在下面的评论栏中提出你的疑问或建议。

(题图:MJ/63c09e75-a3e7-4dbf-ac6f-0233bdd34ad8)


via: https://www.linuxtechi.com/install-use-wireshark-ubuntu/

作者:Pradeep Kumar 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在本文中,我们将逐步向你展示如何在 Kubernetes(k8s)集群上安装 Ansible AWX。

Ansible AWX 是一个强大的开源工具,用于管理和自动化 IT 基础设施。AWX 为 Ansible 提供图形用户界面,使你可以轻松创建、安排和运行 Ansible 剧本 Playbook

另一方面,Kubernetes 是一种流行的容器编排平台,广泛用于部署和管理容器化应用。

先决条件:

  • Kubernetes 集群
  • Kubectl
  • 具有 sudo 权限和集群管理员权限的普通用户
  • 互联网连接

步骤 1:安装 Helm

如果你的系统上安装了 Helm,则在命令下运行以进行安装,

$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod +x get_helm.sh
$ ./get_helm.sh
$ helm version

Install-helm-linux-command-line

步骤 2:安装 AWX chart

在 Kubernetes 上安装 AWX 的最简单方法是使用 AWX Helm “ 海图 chart ”。因此,要通过 “海图” 安装 AWX,首先使用以下 helm 命令添加仓库。(LCTT 译注:Kubernetes 生态中大量使用了和航海有关的比喻,因此本文在翻译时也采用了这些比喻)

$ helm repo add awx-operator https://ansible.github.io/awx-operator/
"awx-operator" has been added to your repositories
$

注意:如果你之前已经添加过此仓库,请在命令下运行以获取最新版本的软件包。

$ helm repo update

要通过 Helm 安装 awx-operator,请运行:

$ helm install ansible-awx-operator awx-operator/awx-operator -n awx --create-namespace

helm-install-awx-operator-kubernetes

这将下载 AWX 海图并将其安装在 awx 命名空间中的 Kubernetes 集群上。安装过程可能需要几分钟,请耐心等待。

步骤 3:验证 AWX 操作员安装

安装成功后,你可以通过运行以下命令来验证 AWX 操作员 operator 状态:

$ sudo kubectl get pods -n awx

你应该看到这样的东西:

awx-operator-pod-status-kubectl

步骤 4: 创建 PV、PVC 并部署 AWX yaml 文件

AWX 需要 postgres 容器荚 pod 的持久卷。那么,让我们首先为本地卷创建一个存储类。

注意:在本文中,我使用本地文件系统作为持久卷。

$ vi local-storage-class.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: local-storage
  namespace: awxprovisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

保存并关闭文件,然后运行:

$ kubectl create -f local-storage-class.yaml
$ kubectl get sc -n awx
NAME            PROVISIONER                    RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   
local-storage   kubernetes.io/no-provisioner   Delete          WaitForFirstConsumer   false                 
$

接下来使用以下 pv.yaml 文件创建持久卷(PV):

$ vi pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: postgres-pv
  namespace: awx
spec:
  capacity:
    storage: 10Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: local-storage
  local:
    path: /mnt/storage
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - k8s-worker

保存并退出文件。

Postgres-pv-awx-kubernetes

重要说明:确保文件夹 /mnt/storage 存在于工作节点上,如果不存在,则在工作节点上使用 mkdir 命令创建它。在我们的例子中,工作节点是 k8s-worker

执行下面的命令在 awx 命名空间中创建 postgres-pv

$ kubectl create -f pv.yaml

成功创建 PV 后,使用 pvc.yaml 文件创建 PersistentVolumeClaim:

$ vi  pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgres-13-ansible-awx-postgres-13-0
  namespace: awx
spec:
  storageClassName: local-storage
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

posgres-pvc-awx-kubernetes

要创建 PVC,请运行以下 kubectl 命令:

$ kubectl create -f pvc.yaml

使用下面的命令验证 PV 和 PVC 的状态:

$ kubectl get pv,pvc -n awx

现在,我们都准备好部署 AWX 实例了。创建一个包含以下内容的 ansible-awx.yaml 文件:

$ vi ansible-awx.yaml
---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: ansible-awx
  namespace: awx
spec:
  service_type: nodeport
  postgres_storage_class: local-storage

Ansible-awx-yaml-file

保存并关闭文件。

执行以下 kubectl 命令来部署 awx 实例:

$ kubectl create -f ansible-awx.yaml

等待几分钟,然后检查 awx 命名空间中的容器荚状态。

$ kubectl get pods -n awx

Ansible-AWX-Pods-Status-Kubernetes

步骤 5:访问 AWX Web 界面

要访问 AWX Web 界面,你需要创建一个公开 awx-web 部署的服务:

$ kubectl expose deployment ansible-awx-web --name ansible-awx-web-svc --type NodePort -n awx

此命令将创建一个 NodePort 服务,该服务将 AWX Web 容器的端口映射到 Kubernetes 节点上的端口。你可以通过运行以下命令找到端口号:

$ kubectl get svc ansible-awx-web-svc  -n awx

这将输出如下内容:

NAME                 TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
ansible-awx-web-svc   NodePort   10.99.83.248   <none>        8052:32254/TCP   82s

在此示例中,Web 服务在端口 32254 上可用。

Expose-Ansible-AWX-Web-NodePort-Kubernetes

默认情况下,admin 用户是 Web 界面的 admin,密码在 <resourcename>-admin-password 机密信息中。要检索管理员密码,请运行:

$ kubectl get secrets -n awx | grep -i admin-password
ansible-awx-admin-password        Opaque               1      109m
$
$ kubectl get secret ansible-awx-admin-password -o jsonpath="{.data.password}" -n awx | base64 --decode ; echo
l9mWcIOXQhSKnzZQyQQ9LZf3awDV0YMJ
$

你现在可以打开 Web 浏览器并进入 http://<node-ip>:<node-port>/ 来访问 AWX Web 界面。在上面的示例中,URL 是:

http://192.168.1.223:3225

AWX-Login-URL-Kubernetes

输入凭据后单击登录。

Ansible-AWX-Web-Dashboard

恭喜! 你已在 Kubernetes 上成功安装 Ansible AWX。你现在可以使用 AWX 来自动化你的 IT 基础架构,并让你作为系统管理员的生活更轻松。

(题图:MJ/bfd354aa-2ee5-4555-98b8-ac5207cbeabe)


via: https://www.linuxtechi.com/install-ansible-awx-on-kubernetes-cluster/

作者:Pradeep Kumar 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在本文中,我们将介绍如何在 RHEL 9/8 上使用 Pacemaker 设置两节点高可用性 Apache 集群。

Pacemaker 是适用于类 Linux 操作系统的高可用性集群软件。Pacemaker 被称为“集群资源管理器”,它通过在集群节点之间进行资源故障转移来提供集群资源的最大可用性。Pacemaker 使用 Corosync 进行集群组件之间的心跳和内部通信,Corosync 还负责集群中的投票选举(Quorum)。

先决条件

在我们开始之前,请确保你拥有以下内容:

  • 两台 RHEL 9/8 服务器
  • Red Hat 订阅或本地配置的仓库
  • 通过 SSH 访问两台服务器
  • root 或 sudo 权限
  • 互联网连接

实验室详情:

事不宜迟,让我们深入了解这些步骤。

1、更新 /etc/hosts 文件

在两个节点上的 /etc/hosts 文件中添加以下条目:

192.168.1.6  node1.example.com
192.168.1.7  node2.example.com

2、安装高可用包 Pacemaker

Pacemaker 和其他必需的包在 RHEL 9/8 的默认包仓库中不可用。因此,我们必须启用高可用仓库。在两个节点上运行以下订阅管理器命令。

对于 RHEL 9 服务器:

$ sudo subscription-manager repos --enable=rhel-9-for-x86_64-highavailability-rpms

对于 RHEL 8 服务器:

$ sudo subscription-manager repos --enable=rhel-8-for-x86_64-highavailability-rpms

启用仓库后,运行命令在两个节点上安装 pacemaker 包:

$ sudo dnf install pcs pacemaker fence-agents-all -y

3、在防火墙中允许高可用端口

要允许防火墙中的高可用端口,请在每个节点上运行以下命令:

$ sudo firewall-cmd --permanent --add-service=high-availability
$ sudo firewall-cmd --reload

4、为 hacluster 用户设置密码并启动 pcsd 服务

在两台服务器上为 hacluster 用户设置密码,运行以下 echo 命令:

$ echo "<Enter-Password>" | sudo passwd --stdin hacluster

执行以下命令在两台服务器上启动并启用集群服务:

$ sudo systemctl start pcsd.service
$ sudo systemctl enable pcsd.service

5、创建高可用集群

使用 pcs 命令对两个节点进行身份验证,从任何节点运行以下命令。在我的例子中,我在 node1 上运行它:

$ sudo pcs host auth node1.example.com node2.example.com

使用 hacluster 用户进行身份验证。

使用下面的 pcs cluster setup 命令将两个节点添加到集群,这里我使用的集群名称为 http_cluster。仅在 node1 上运行命令:

$ sudo pcs cluster setup http_cluster --start node1.example.com node2.example.com
$ sudo pcs cluster enable --all

这两个命令的输出如下所示:

从任何节点验证初始集群状态:

$ sudo pcs cluster status

注意:在我们的实验室中,我们没有任何防护设备,因此我们将其禁用。但在生产环境中,强烈建议配置防护。

$ sudo pcs property set stonith-enabled=false
$ sudo pcs property set no-quorum-policy=ignore

6、为集群配置共享卷

在服务器上,挂载了一个大小为 2GB 的共享磁盘(/dev/sdb)。因此,我们将其配置为 LVM 卷并将其格式化为 XFS 文件系统。

在开始创建 LVM 卷之前,编辑两个节点上的 /etc/lvm/lvm.conf 文件。

将参数 #system_id_source = "none" 更改为 system_id_source = "uname"

$ sudo sed -i 's/# system_id_source = "none"/ system_id_source = "uname"/g' /etc/lvm/lvm.conf

node1 上依次执行以下一组命令创建 LVM 卷:

$ sudo pvcreate /dev/sdb
$ sudo vgcreate --setautoactivation n vg01 /dev/sdb
$ sudo lvcreate -L1.99G -n lv01 vg01
$ sudo lvs /dev/vg01/lv01
$ sudo mkfs.xfs /dev/vg01/lv01

将共享设备添加到集群第二个节点(node2.example.com)上的 LVM 设备文件中,仅在 node2 上运行以下命令:

[sysops@node2 ~]$ sudo lvmdevices --adddev /dev/sdb

7、安装和配置 Apache Web 服务器(httpd)

在两台服务器上安装 Apache web 服务器(httpd),运行以下 dnf 命令:

$ sudo dnf install -y httpd wget

并允许防火墙中的 Apache 端口,在两台服务器上运行以下 firewall-cmd 命令:

$ sudo firewall-cmd --permanent --zone=public --add-service=http
$ sudo firewall-cmd --permanent --zone=public --add-service=https
$ sudo firewall-cmd --reload

在两个节点上创建 status.conf 文件,以便 Apache 资源代理获取 Apache 的状态:

$ sudo bash -c 'cat <<-END > /etc/httpd/conf.d/status.conf
<Location /server-status>
    SetHandler server-status
    Require local
</Location>
END'
$

修改两个节点上的 /etc/logrotate.d/httpd

替换下面的行

/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true

/usr/bin/test -f /run/httpd.pid >/dev/null 2>/dev/null &&
/usr/bin/ps -q $(/usr/bin/cat /run/httpd.pid) >/dev/null 2>/dev/null &&
/usr/sbin/httpd -f /etc/httpd/conf/httpd.conf \
-c "PidFile /run/httpd.pid" -k graceful > /dev/null 2>/dev/null || true

保存并退出文件。

8、为 Apache 创建一个示例网页

仅在 node1 上执行以下命令:

$ sudo lvchange -ay vg01/lv01
$ sudo mount /dev/vg01/lv01 /var/www/
$ sudo mkdir /var/www/html
$ sudo mkdir /var/www/cgi-bin
$ sudo mkdir /var/www/error
$ sudo bash -c ' cat <<-END >/var/www/html/index.html
<html>
<body>High Availability Apache Cluster - Test Page </body>
</html>
END'
$
$ sudo umount /var/www

注意:如果启用了 SElinux,则在两台服务器上运行以下命令:

$ sudo restorecon -R /var/www

9、创建集群资源和资源组

为集群定义资源组和集群资源。在我的例子中,我们使用 webgroup 作为资源组。

  • web_lvm 是共享 LVM 卷的资源名称(/dev/vg01/lv01
  • web_fs 是将挂载在 /var/www 上的文件系统资源的名称
  • VirtualIP 是网卡 enp0s3 的 VIP(IPadd2)资源
  • Website 是 Apache 配置文件的资源。

从任何节点执行以下命令集。

$ sudo pcs resource create web_lvm ocf:heartbeat:LVM-activate vgname=vg01 vg_access_mode=system_id --group webgroup
$ sudo pcs resource create web_fs Filesystem device="/dev/vg01/lv01" directory="/var/www" fstype="xfs" --group webgroup
$ sudo pcs resource create VirtualIP IPaddr2 ip=192.168.1.81 cidr_netmask=24 nic=enp0s3 --group webgroup
$ sudo pcs resource create Website apache configfile="/etc/httpd/conf/httpd.conf" statusurl="http://127.0.0.1/server-status" --group webgroup

现在验证集群资源状态,运行:

$ sudo pcs status

很好,上面的输出显示所有资源都在 node1 上启动。

10、测试 Apache 集群

尝试使用 VIP(192.168.1.81)访问网页。

使用 curl 命令或网络浏览器访问网页:

$ curl http://192.168.1.81

或者

完美!以上输出确认我们能够访问我们高可用 Apache 集群的网页。

让我们尝试将集群资源从 node1 移动到 node2,运行:

$ sudo pcs node standby node1.example.com
$ sudo pcs status

完美,以上输出确认集群资源已从 node1 迁移到 node2

要从备用节点(node1.example.com)中删除节点,运行以下命令:

$ sudo pcs node unstandby node1.example.com

以上就是这篇文章的全部内容,我希望你发现它提供了丰富的信息,请在下面的评论部分中发表你的疑问和反馈。

(题图:MJ/3bf8c775-72ed-4e44-a28d-c872c7c8632f)


via: https://www.linuxtechi.com/high-availability-apache-cluster-on-rhel/

作者:Pradeep Kumar 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出