openshift gitops 实践

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: openshift gitops 实践

文章目录

1. 介绍

2. 安装和验证GitOps operator

3. 通过Web UI访问Argo CD

4. 检查 Argo CD Projects, Applications and Application Sets

5. 准备咖啡店项目

6. 部署 Coffee Shop 应用程序

7. 部署 Barista Component as Knative Service with Argo CD Application Set

7.1 Sync Applications

8. 更改应用程序设置和观察Argo CD Argo CD 修复

9. 发现 New Logging Data

9.1 Add `prod-coffeeshop` Namespace to `ClusterLogForwarder`

9.2 验证 New Logs

Red Hat OpenShift 4.8 环境集群搭建

openshift 如何输出json日志

openshfit Vertical Pod Autoscaler 实践

openshift Certified Helm Charts 实践

openshift 创建一个Serverless应用程序

openshift gitops 实践

openshift Tekton pipeline 实践

1. 介绍

GitOps是一种为云本地应用程序实现持续部署的声明性方法。您可以使用GitOps创建可重复的过程,管理Red Hat®OpenShift®容器平台集群和跨多集群Kubernetes环境的应用程序。GitOps可以快速地处理和自动化复杂的部署,从而在部署和发布周期中节省时间。


在本实验室中,您将部署 GitOps operator并使用它将 Coffee Shop 应用程序部署到 prod-coffeeshop 命名空间中。 Coffee Shop 应用程序作为 YAML 清单和 Kustomize 文件存储在 Git 存储库中。您可以检查该 Git 存储库以了解有关 Kustomize 工作原理的详细信息。


首先,部署 Argo CD 并访问 Web 界面。然后,您将 Coffee Shop 应用程序前端的 Argo CD 应用程序定义复制并粘贴到界面中并观察其部署。您在部署该应用程序后将其删除。


然后,您将探索能够将复杂的应用程序集部署到多个集群的应用程序集,但您将只部署到本地集群。您使用应用程序集不仅可以部署咖啡店前端组件,还可以部署咖啡师 Knative 应用程序,所有这些都在一个应用程序对象中。


最后,您对集群上的应用程序进行一些手动更改,并观察 Argo CD 如何将应用程序返回到 GitOps 存储库中描述的所需状态。


目标:


使用 Argo CD 部署单个应用程序

使用 Argo CD 应用程序集来部署 Kubernetes 部署和 Knative 服务

体验 Argo CD 修复

2. 安装和验证GitOps operator

浏览到您的 OpenShift Container Platform Web 控制台,并以admin身份登录。

这方面的说明和凭据在您收到的配置电子邮件中。

在 Administrator 透视图中,选择 Operators → Operator Hub。

要轻松找到安装程序卡,请在 Filter by keyword... 字段中键入 openshift gitops 并单击该卡。

单击安装,然后再次安装,保留“更新通道:稳定”和“更新批准:自动”的所有默认值。

3. 通过Web UI访问Argo CD

Argo CD还没有自动与OpenShift容器平台认证系统集成。


获取 Argo CD 管理员密码:

a. 从项目下拉列表中选择项目:openshift-gitops。

b. 从导航菜单中,选择Workloads → Secrets。

c. 使用 Search by name… 并输入 openshift-gitops-cluster,然后单击 openshift-gitops-cluster 链接。

d.导航到 Secrets → Secret details 并向下滚动到 Data 部分。

e. 找到密码字段并单击⎘(复制)将密码值复制到剪贴板。

现在找到 Argo CD Web UI 的链接:

a. 在导航菜单上,选择Networking → Routes.

b. 单击第三列中的 openshift-gitops-server Location 链接。

使用用户名 admin 和剪贴板中的密码登录 Argo CD Web UI

4. 检查 Argo CD Projects, Applications and Application Sets

Argo CD 项目不同于 OpenShift 项目。


Argo CD 将项目定义为


来源:应用程序配置 YAML 清单存储库,例如 Git 或 Helm 存储库。

目标:部署源的 OpenShift 服务器、命名空间及其用户。

SyncPolicy:定义 Argo CD 如何保持源和目标同步

工具:Kustomize、脚本等项目。将应用程序配置设置(例如 YAML 或

Helm)转换为特定目标详细信息的工具。示例包括:主机名、端口、机密和容器映像注册表。

Argo CD 定义了一个应用程序以包括以下内容


命名空间

部署

服务

路线

Argo CD 应用程序集添加应用程序自动化


Argo CD 中的多集群支持和集群多租户支持。

应用程序可以从多个来源进行模板化,包括 Git 或 Argo CD 自己定义的集群列表。

5. 准备咖啡店项目

在本练习中,您将为您的Coffee Shop应用程序创建一个新的专用项目。Argo CD的用户界面可能有点挑剔,所以请仔细遵循说明。如果您错过了某个步骤,一些看似合理的默认项实际上可能并不适用。这是一个安全特性——确保您意识到您正在“允许所有”。


1.从Argo CD web控制台,点击齿轮图标进入项目管理界面:

1035234-20181020215539574-213176954.png

2. Select PROJECTS → NEW PROJECT.


Enter coffee-shop as the new project name and click CREATE.


Scroll down to SOURCE REPOSITORIES and click EDIT.


Make sure there is an asterisk * in the field and click SAVE.

星号允许使用此项目的应用程序使用任何存储库。您必须这样做才能知道该项目中的应用程序现在可以从任何地方的任何存储库中提取配置。


向下滚动到目的地并点击编辑。


Click ADD DESTINATION and under Namespace replace the asterisk * with prod-coffeeshop.


您不需要输入服务器名称,因为您使用的服务器是OpenShift GitOps operator的本地服务器。您特别选择了prod-coffeeshop名称空间,因为您不希望Argo CD管理OpenShift容器平台环境—只是prod-coffeeshop上的所有应用程序。


Click SAVE.


点击叠纸图标进入应用管理界面:

1035234-20181020215539574-213176954.png

  1. 现在你有一个项目,你可以与新的Argo CD应用程序相关联,以指导OpenShift容器平台上的应用程序管理。

6. 部署 Coffee Shop 应用程序

在本练习中,您将把Coffee Shop应用程序部署到生产名称空间中。Coffee Shop应用程序有三个组件:数据库、Coffee Shop前端和订单管理系统,以及管理每个订单从准备(PREPARING )到收集状态(COLLECTED )的Barista服务。


已经为您部署了数据库。

首先只部署Coffee Shop应用程序前端组件,这样就可以了解什么是Argo CD“应用程序”。

您的Argo CD应用程序管理界面应该显示“没有应用程序”。Argo CD应用程序YAML内容提供给您复制和粘贴到Argo CD接口。


Click CREATE APPLICATION and then click EDIT AS YAML.

Copy and paste the following manifest:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: coffee-shop
  namespace: openshift-gitops
spec:
  destination:
    server: https://kubernetes.default.svc
    namespace: prod-coffeeshop
  project: coffee-shop
  source:
    path: ./coffee-shop-kustomize/coffee-shop/overlays/production
    repoURL: http://github.com/redhat-gpte-devopsautomation/ocp48_hands_on_apps.git
    targetRevision: HEAD

如果这个应用程序定义有任何问题,你可以在这里找到一个工作副本:https://github.com/redhat-gpte-devopsautomation/ocp48_hands_on_apps/blob/main/coffee-shop-argocd/coffee-shop.yaml.


Click SAVE.

观察定义应用程序的字段现在已被填充。

Click CREATE.

In the pop-up window that appears, click SYNC → SYNCHRONIZE.

单击应用程序名称可以查看应用程序的滚出,并查看所有应用程序部分的表示

1035234-20181020215539574-213176954.png

成功部署应用程序组件后,单击咖啡店应用程序上的DELETE。 您可以删除它,以便可以使用一个对象(Application集)部署两个组件

7. 部署 Barista Component as Knative Service with Argo CD Application Set

在这个练习中,您将使用OpenShift GitOps Argo CD的一个新特性:Application Sets。

应用程序集使得跨多个集群部署多个应用程序变得很容易,这些集群拥有不同的所有者。

在本例中,您对现有的Coffee Shop应用程序组件(Coffee - Shop和barista)进行了简单的部署,它们都在同一台服务器上和同一名称空间中。


1.返回OpenShift容器平台web控制台。

应用程序集还没有用户界面,所以你需要OpenShift容器平台web控制台来完成这项工作。(不要关闭你的Argo CD网络控制台。)

2.从您的web控制台顶部的工具栏,单击ocp_web_console_add_icon(添加)导入您的应用程序的Argo CD应用程序集的YAML清单如下:

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: coffee-shop-set
  namespace: openshift-gitops
spec:
  generators:
  - git:
      repoURL: https://github.com/redhat-gpte-devopsautomation/ocp48_hands_on_apps.git
      revision: HEAD
      directories:
      - path: coffee-shop-kustomize/*
  template:
    metadata:
      name: '{{path.basename}}'
    spec:
      destination:
        namespace: prod-coffeeshop
        server: 'https://kubernetes.default.svc'
      project: coffee-shop
      source:
        path: '{{path}}/overlays/production/'
        repoURL: >-
          https://github.com/redhat-gpte-devopsautomation/ocp48_hands_on_apps.git
        targetRevision: HEAD
      syncPolicy:
        automated:
          allowEmpty: false
          prune: true
          selfHeal: true
        retry:
          backoff:
            duration: 5s
            factor: 2
            maxDuration: 3m
          limit: 5
        syncOptions:
          - Validate=false
          - CreateNamespace=true
          - PrunePropagationPolicy=foreground
          - PruneLast=true

如果这个应用程序定义有任何问题,你可以在这里找到一个工作副本:https://github.com/redhat-gpte-devopsautomation/ocp48_hands_on_apps/blob/main/coffee-shop-argocd/coffee-shop-set.yaml.


3.Click Create to create your application set.

7.1 Sync Applications

更改您的Argo CD web控制台,并注意,barista应用程序已添加。

On the barista application, click SYNC.

If a pop-up menu appears, click SYNCHRONIZE.

Repeat the SYNC → SYNCHRONIZE steps on the coffee-shop

application.

Expect the coffee-shop application to sync.

8. 更改应用程序设置和观察Argo CD Argo CD 修复

Argo CD监视您的源和目的地的变化。当同步时,Argo CD将目的地返回到源文件中定义的状态,根据您的Argo CD应用程序配置,可以是自动的,也可以是批准的。Argo CD默认是保守的,所以它的同步自动化策略没有打开。但在这个实验室环境中,政策被开启了。

对于本练习,您将手动扩大生产咖啡店应用程序,并观察Argo CD将其缩小到一个副本。


Go back to the OpenShift Container Platform web console.

From the Administrator perspective, select Project: prod-coffeeshop.

从导航菜单, select Workloads → Deployments.

Locate the coffee-shop deployment, click options_menu_icon(Options), and select Edit Pod count.

Click ⊕ (Plus) four times to scale up the deployment to five pods.

Return to the Argo CD web console.

From the application management interface, click the coffee-shop application card.

You can see the single replica configuration here:

https://github.com/redhat-gpte-devopsautomation/ocp48_hands_on_apps/blob/main/coffee-shop-kustomize/coffee-shop/base/deployment.yaml#L14.


您可以单击REFRESH来刷新实际部署的OpenShift容器平台资源的Argo CD视图。

9. 发现 New Logging Data

您已经将几个新的应用程序组件部署到prod-coffeeshop名称空间中。在本练习中,您将了解日志是如何更改的。

9.1 Add prod-coffeeshop Namespace to ClusterLogForwarder

转到OpenShift容器平台web控制台,选择管理员透视图.

On the navigation menu, select Home → Search.

From the Project: drop-down list, select the openshift-logging namespace.

From the Resources drop-down list, select ClusterLogForwarder.

Click the CLF instance.

Click the YAML tab.

Scroll to line 52, - dev-coffeeshop.

紧跟在第52行之后,将- prod- coffeshop作为新数组元素插入到该YAML数组中。

Expect it to look like this:

1035234-20181020215539574-213176954.png

9. Click Save.

9.2 验证 New Logs

Go to the Kibana web console.

Create a new index pattern to capture all of the Coffee Shop projects—both dev-coffeeshop and prod-coffeeshop:

a. On the navigation menu, click Management.

b. Click Create index pattern and add an index pattern named *-coffeeshop-*.

c. Click Next.

d. In the Time Filter field select @timestamp.

From the navigation menu, click Discover.

Select the *-coffeeshop-* index pattern you just built, and also the Available Fields kubernetes.namespace_name and structured.message.

Expect to see results from both the dev-coffeeshop and prod-coffeeshop namespaces.

Observe that new orders are also being processed by the Create Order cron job running in your cluster.

您观察到Argo CD在您的第一个生产咖啡店应用程序中单独部署应用程序。然后,您看到Argo CD部署了一个ApplicationSet,该ApplicationSet自动创建了两个应用程序:coffee-shop和barista。咖啡师恰好是Knative提供的服务。使用Argo CD来部署Kubernetes部署或Knative服务并不需要特别的活动。

您还看到了如何从prod- coffeshop名称空间获得日志结果,并且可以查询结构化的。*字段以获得更详细的分析。

在下一个实验中,您将为developmen创建一个简单的管道




相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
Kubernetes Cloud Native 安全
ArgoCD + KubeVela:以开发者为中心的 GitOps
在这篇博文中,我们将分享基于阿里云的用例,使用 Argo CD 和 KubeVela 构建以开发者为中心的持续应用交付流水线的经验。
ArgoCD + KubeVela:以开发者为中心的 GitOps
|
3月前
|
Prometheus Kubernetes API
openshift 4.3 Istio的搭建
openshift 4.3 Istio的搭建
48 5
|
存储 域名解析 Kubernetes
从零开始,在 Kubernetes 上玩转 Erda(二)
本章节介绍 Erda 的部署以及配置细节
1821 0
从零开始,在 Kubernetes 上玩转 Erda(二)
|
Rust Kubernetes 监控
从零开始,在 Kubernetes 上玩转 Erda(三)
本章节通过 Erda CI/CD 能力进行应用的交付
1029 0
从零开始,在 Kubernetes 上玩转 Erda(三)
|
存储 运维 Kubernetes
基于Kubernetes的CICD实战
基于Kubernetes的CICD实战
|
存储 Kubernetes Docker
【排坑指南之kubeSphere】2022年最新版-”kubeSphere3.2.1 Paas容器云平台“使用DevOps-CICD之”排坑指南“
【排坑指南之kubeSphere】2022年最新版-”kubeSphere3.2.1 Paas容器云平台“使用DevOps-CICD之”排坑指南“
136 0
|
存储 Kubernetes Linux
Kubernetes核心技术Helm
Kubernetes核心技术Helm
408 0
Kubernetes核心技术Helm
|
Kubernetes Cloud Native 应用服务中间件
从零开始,在 Kubernetes 上玩转 Erda(一)
本章节主要介绍了使用 kubeadm 部署 Kubernetes,为部署 Erda 铺路
1640 1
从零开始,在 Kubernetes 上玩转 Erda(一)
|
存储 Kubernetes 前端开发
flux2+kustomize+helm+github 多集群 GitOps 云原生渐进式交付
flux2+kustomize+helm+github 多集群 GitOps 云原生渐进式交付
527 0
|
Kubernetes 负载均衡 算法
KubeSphere在项目中的使用
KubeSphere在项目中的使用
KubeSphere在项目中的使用