第2章 API コントローラーをインストールする


API コントローラーをインストールするには、コミュニティーの Operator を使用します。

前提条件

  • OpenShift クラスターにアクセスするための cluster-admin 権限。

手順

  1. OpenShift Container Platform Web コンソールで、cluster-admin 権限を使用してログインします。
  2. 左側のナビゲーションメニューで、Operators > OperatorHub の順にクリックします。
  3. Filter by keyword テキストボックスに Apicurio と入力し、Apicurio API Controller を見つけます。
  4. Operator に関する情報を読み、Install をクリックして Operator サブスクリプションページを表示します。
  5. 以下に示すデフォルトのサブスクリプション設定を受け入れます。

    • Installation mode: All namespaces on the cluster (default)
    • Installed namespace: Operator をインストールする namespace を選択します (例: api-controller)。まだ namespace が存在しない場合は、このフィールドをクリックし、Create Project を選択して namespace を作成します。
    • Approval Strategy: Automatic または Manual を選択します。
  6. Install をクリックし、Operator がインストールされ、使用できる状態になるまでしばらく待ちます。
  7. Operator がインストールされていることを確認します。Operator をインストールした後、Operators > Installed Operators をクリックし、選択した namespace (例: api-controller) に Apicurio API Controller がインストールされていることを確認します。
  8. OpenShift Container Platform Web コンソールで Developer ビューに変更し、インストールに必要な YAML を適用します。
  9. api-controller namespace で以下の YAML を使用して PostgreSQL データベースを作成します。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: registry-pvc
      namespace: api-controller
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi  # Adjust the storage size as needed
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      namespace: "api-controller"
      labels:
        app: postgresql
      name: postgresql
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: postgresql
      template:
        metadata:
          labels:
            app: postgresql
        spec:
          initContainers:
            - name: init-data
              image: busybox
              command: ['sh', '-c', 'rm -rf /var/lib/postgresql/data/* && mkdir -p /var/lib/postgresql/data/pgdata']
              volumeMounts:
                - mountPath: "/var/lib/postgresql/data"
                  name: "registry-pgdata"
          containers:
            - name: postgresql
              image: quay.io/debezium/postgres:13-alpine
              ports:
                - containerPort: 5432
              env:
                - name: POSTGRES_DB
                  value: registry
                - name: POSTGRES_USER
                  value: apicurio
                - name: POSTGRES_PASSWORD
                  value: registry
                - name: PGDATA
                  value: "/var/lib/postgresql/data/pgdata"
              volumeMounts:
                - mountPath: "/var/lib/postgresql/data"
                  name: "registry-pgdata"
          volumes:
            - name: registry-pgdata
              persistentVolumeClaim:
                claimName: registry-pvc
    ---
    apiVersion: v1
    kind: Service
    metadata:
      namespace: "api-controller"
      labels:
        app: postgresql
      name: postgresql-service
    spec:
      ports:
        - name: http
          port: 5432
          protocol: TCP
          targetPort: 5432
      selector:
        app: postgresql
      type: ClusterIP
  10. api-controller namespace で次の YAML を使用して、apicurio という名前の CR と必要なルートを作成します。

    注記

    mycluster.example.com は、クラスターのホスト名に置き換えます。

    # Replace mycluster.example.com with your cluster hostname
    # Create an API Controller custom resource
    apiVersion: registry.apicur.io/v1
    kind: ApicurioRegistry3
    metadata:
      name: apicurio
      namespace: api-controller
    spec:
      studioUi:
        enabled: true
        env:
          - name: APICURIO_REGISTRY_API_URL
            value: 'https://api-controller-app.apps.mycluster.example.com/apis/registry/v3'
          - name: APICURIO_REGISTRY_UI_URL
            value: 'https://api-controller-ui.apps.mycluster.example.com'
      ui:
        env:
          - name: REGISTRY_API_URL
            value: 'https://api-controller-app.apps.mycluster.example.com/apis/registry/v3'
      app:
        sql:
          dataSource:
            username: apicurio
            password: registry
            url: 'jdbc:postgresql://postgresql-service:5432/registry'
    ---
    # Create a route for the Apicurio Registry API
    apiVersion: route.openshift.io/v1
    kind: Route
    metadata:
      name: api-controller-registry-api
      namespace: api-controller
    spec:
      host: api-controller-app.apps.mycluster.example.com
      path: /
      to:
        kind: Service
        name: apicurio-app-service
      port:
        targetPort: http
      tls:
        termination: edge
        insecureEdgeTerminationPolicy: Redirect
      wildcardPolicy: None
    ---
    # Create a route for the Apicurio Registry UI
    apiVersion: route.openshift.io/v1
    kind: Route
    metadata:
      name: api-controller-registry-ui
      namespace: api-controller
    spec:
      host: api-controller-ui.apps.mycluster.example.com
      path: /
      to:
        kind: Service
        name: apicurio-ui-service
      port:
        targetPort: http
      tls:
        termination: edge
        insecureEdgeTerminationPolicy: Redirect
      wildcardPolicy: None
    ---
    # Create a route for the Apicurio Studio UI
    apiVersion: route.openshift.io/v1
    kind: Route
    metadata:
      name: api-controller-studio-ui
      namespace: api-controller
    spec:
      host: api-controller-studio-ui.apps.mycluster.example.com
      path: /
      to:
        kind: Service
        name: apicurio-studio-ui-service
      port:
        targetPort: http
      tls:
        termination: edge
        insecureEdgeTerminationPolicy: Redirect
      wildcardPolicy: None

検証

api-controller-studio-ui ルートに移動し、Location URL をクリックします。Apicurio Studio コンソールが表示されるはずです。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.