5.4. OpenShift を使用した Red Hat Quay Builder の設定

5.4.1. Red Hat Quay ビルド向けの OpenShift の準備

Red Hat Quay からのビルドを許可する前に、OpenShift クラスターで必要となるいくつかのアクションがあります。

  1. ビルドが実行されるプロジェクトを作成します (例:「builder」)。

    $ oc new-project builder
  2. ビルドの実行に使用されるこの ProjectServiceAccount を作成します。これに Jobs および Pods を作成するのに十分な権限があることを確認します。後で使用できるように ServiceAccount のトークンをコピーします。

    $ oc create sa -n builder quay-builder
    $ oc policy add-role-to-user -n builder edit system:serviceaccount:builder:quay-builder
    $ oc sa get-token -n builder quay-builder
  3. OpenShift クラスターの API サーバーの URL を特定します。これは OpenShift コンソールで確認できます。
  4. ビルド Jobs のスケジュール時に使用されるワーカーノードラベルを特定します。ビルド Pod はベアメタルワーカーノードで実行される必要があるため、通常はそれらが特定のラベルで識別されます。クラスター管理者と、どのノードラベルを使用する必要があるかを確認します。
  5. クラスターが自己署名証明書を使用している場合、Red Hat Quay の追加証明書に追加する kube apiserver の CA を取得します。

    1. CA を含むシークレットの名前を取得します。

      $ oc get sa openshift-apiserver-sa --namespace=openshift-apiserver -o json | jq '.secrets[] | select(.name | contains("openshift-apiserver-sa-token"))'.name
    2. Openshift コンソールのシークレットから ca.crt キー値を取得します。値は「-----BEGIN CERTIFICATE-----」で開始されるはずです。
    3. ConfigTool を使用した Red Hat Quay での CA のインポートこのファイルの名前が K8S_API_TLS_CA と一致することを確認します。
  6. ServiceAccount に必要なセキュリティーコンテキスト/ロールバインディングを作成します。
apiVersion: security.openshift.io/v1
kind: SecurityContextConstraints
metadata:
  name: quay-builder
priority: null
readOnlyRootFilesystem: false
requiredDropCapabilities: null
runAsUser:
  type: RunAsAny
seLinuxContext:
  type: RunAsAny
seccompProfiles:
- '*'
supplementalGroups:
  type: RunAsAny
volumes:
- '*'
allowHostDirVolumePlugin: true
allowHostIPC: true
allowHostNetwork: true
allowHostPID: true
allowHostPorts: true
allowPrivilegeEscalation: true
allowPrivilegedContainer: true
allowedCapabilities:
- '*'
allowedUnsafeSysctls:
- '*'
defaultAddCapabilities: null
fsGroup:
  type: RunAsAny
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: quay-builder-scc
  namespace: builder
rules:
- apiGroups:
  - security.openshift.io
  resourceNames:
  - quay-builder
  resources:
  - securitycontextconstraints
  verbs:
  - use
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: quay-builder-scc
  namespace: builder
subjects:
- kind: ServiceAccount
  name: quay-builder
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: quay-builder-scc