CN2パイプラインをインストールする前に
概要 次の手順は、いくつかの前提条件を取得し、CN2 パイプラインの Helm チャートのファイルを values.yaml
入力するために使用するいくつかの値を取得するのに役立ちます。
Helmのインストール
CN2パイプラインチャートをインストールする前に、管理クラスターに Helm 3 をインストールする必要があります。Helmは、Kubernetesアプリケーションの管理をサポートします。ステアリングチャートは、最も複雑なKubernetesアプリケーションの定義、インストール、アップグレードに役立ちます。
以下のコマンドを実行して、最新バージョンの Helm 3 をダウンロードしてインストールします。
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh
Kubernetesでのサービスアカウントとトークンの作成
ワーキング サービス アカウントが必要です。サービスアカウントとトークンの作成は、APIを使用してCN2パイプラインの内外でKubernetesクラスタにアクセスを提供するために重要です。このトピックでは、サービス アカウント、トークン、ロール、およびロール バインディングを作成する方法について説明します。
これらの手順を通して、 cn2pipelines
一例として使用される。
Kubernetes バージョン 1.23 以前の場合
CN2クラスターで次の手順を実行します。
サービス アカウントとトークンを作成するには、次の手順に示します。
-
名前空間がまだ存在しない場合は、名前空間を作成します。
kubectl create ns cn2pipelines
-
という名前のサービス アカウントを作成します
cn2pipelines
。kubectl create sa cn2pipelines -n cn2pipelines
-
コマンドを
describe
実行してトークンを取得します。kubectl describe sa cn2pipelines -n cn2pipelines
出力:
Name: cn2pipelines Namespace: cn2pipelines Labels: <none> Annotations: <none> Image pull secrets: <none> Mountable secrets: cn2pipelines-token-5szb6 Tokens: cn2pipelines-token-5szb6 Events: <none>
デフォルトでは、Kubernetes バージョン 1.23 以前では、サービス アカウントの作成時にトークンがシークレットとして作成されます。
-
Kubernetes と
bearerToken
OpenShift のシークレット値を取得するには、次の手順にしたがっています。-
Kubernetesを使用するCN2の場合、ステップ3の出力から を取得します
Mountable secrets
。describe secret コマンドを実行して、サービス アカウントの をbearerToken
取得します。はbearerToken
、ファイルを更新values.yaml
するときに必要です。kubectl describe secret cn2pipelines-token-5szb6 -n cn2pipelines
出力:
Name: cn2pipelines-token-5szb6 Namespace: cn2pipelines Labels: <none> Annotations: kubernetes.io/service-account.name: cn2pipelines kubernetes.io/service-account.uid: e5059023-7269-482a-870c-5c4ff175ba00 Type: kubernetes.io/service-account-token Data ==== namespace: 10 bytes token: eyJhbGciOiJSUzI1NiIsImtpZCI6InZQMkxOcWlOQjg5MElySUtiWGpPTWJVVGZNR3FQS3hnUDhyTDFHZjd3VFkifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJjaS1qZW5raW5zIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImNpLWplbmtpbnMtdG9rZW4tNXN6YjYiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiY2ktamVua2lucyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImU1MDU5MDIzLTcyNjktNDgyYS04NzBjLTVjNGZmMTc1YmEwMCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpjaS1qZW5raW5zOmNpLWplbmtpbnMifQ.DeAySlkf7dW6xzUH5bLeXc2lRPa_RMZ2bG4zGktpHyA2eDdM-nliCTpwhuBPbZ2fNeiaZb3Tl8h-MJNF7IygwXEHjW8ALfvUv4nBnmSMj9JW44PoPeMSCAnrtIXucy8hcGZN4K6i1w2n6ASSYAXyifwMOLy3-KfbY9PYErOb0eC34-cHkP-TQoV0o4ncA58kwOwut2DmkIKfH3gsOAY445wO4_WUeYuqO_JU0uQpyPaCRO9sLDhMlVcnp0TI7hvZu_DbVyRhy4b8QqJEj3h08j0lPGvFhvmCcUqTSLXbVtV9o62cqhd1q9pcFq5yAxmYpuwWjkOP8KuIsf71U070_w ca.crt: 1099 bytes
-
Red Hat OpenShiftを搭載したCN2の場合、画像を使用してシークレット値としてシークレットをプルします。describe secret コマンドを実行して、サービス アカウントの を
bearerToken
取得します。はbearerToken
、ファイルを更新values.yaml
するときに必要です。kubectl get secret cn2pipelines-dockercfg-445hx -n cn2pipelines -o yaml
出力:
apiVersion: v1 data: .dockercfg: e30= kind: Secret metadata: annotations: kubernetes.io/service-account.name: cn2pipelines kubernetes.io/service-account.uid: 38b98d44-334e-4fce-ba90-afe6eae1f644 openshift.io/token-secret.name: cn2pipelines-token-n5qwb openshift.io/token-secret.value: eyJhbGciOiJSUzI1NiIsImtpZCI6ImZ5aVVpQURJUzU1YThqV3ZUME43UGxiX1JhR0hoYnhZd25GMkpBX2g3UzAifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJjaS1qZW5raW5zIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImNpLWplbmtpbnMtdG9rZW4tbjVxd2IiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiY2ktamVua2lucyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjM4Yjk4ZDQ0LTMzNGUtNGZjZS1iYTkwLWFmZTZlYWUxZjY0NCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpjaS1qZW5raW5zOmNpLWplbmtpbnMifQ.Zj5Bs8Y8h4GL0o-p7rhnJcPeYdbcoVpfM0oRMHky3KUQuTAb5ZjwV3o-h0e-hZlQC_TpI4kNotijEoFiwKU_mYPr9bY36EBngUZp41BiqSwiY_5qG_wYDd6Dg_Xh6C5n4eagBN8OAi9IXlM3SYH9hgGmEx-dqoXhlGdxCht_JPWoDXbKq0eFU_mtUlqjMU0p__g1VoQ1svlRCUvRsfI8OxIM5jd7qPC3NqkpHlK1I5BHQaScWdjihaTo7OpK-zkcgenSjq882Okw4UxsttFgJZ5iF7hHLcMWtVi-pX4SVl2pdHi8H7DxD4YDiZD3xUJapRpRvnHqNsDvoXXonWBOskW4JE86t95Z5Z7lIHNPpvftajxc3qky6hBW0-1yfpgK36Df2g3OGGrVm16S31wl1K6y7oUu6Py5B4BM5qcge7J9wNTNRMezuomt38SyqyuaCt8SBL-dtc_8bAhKLnMZ7Vr_kGHCDSGBeO_7BaH9dqhb85-oyC_mKHA8F_5xmC4wZ7bBDhMRN9lAoKePK6p1toz1Ca395_w83ib5zGxMfD9C-hskYNrkhCPJwS00_s_QXQdXnnzhc0_C2K9KqZk1qE8A2zmlbaxtcP_PrMMhS5H0bs2i8n88kZO74H7AmPk8HRx0oLG5Ue8Oh8F5x9Ua5M4WuZSfmN5jXlSVdCvtqQY creationTimestamp: "2023-03-17T17:32:11Z" name: cn2pipelines-dockercfg-445hx namespace: cn2pipelines ownerReferences: - apiVersion: v1 blockOwnerDeletion: false controller: true kind: Secret name: cn2pipelines-token-n5qwb uid: a02b6e19-db50-4d27-9b29-b33a60ad47c9 resourceVersion: "1132721" uid: 723f8808-2fd5-49e6-8012-9fbab8962b47 type: kubernetes.io/dockercfg
-
-
サービス アカウントに適切な権限を付与する ClusterRole および ClusterRoleBinding を作成します。
-
ClusterRole を作成し、ファイルに名前を付けます
clusterrole-cn2pipelines.yaml
。apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: name: cn2pipelines name: cn2pipelines rules: - apiGroups: - '*' resources: - '*' verbs: - '*' - nonResourceURLs: - '*' verbs: - '*'
-
作成したファイルを適用します
clusterrole-cn2pipelines.yaml
。kubectl apply -f clusterrole-cn2pipelines.yaml -n cn2pipelines
-
ClusterRoleBinding ファイルを作成し、ファイルに名前を付けます
clusterrolebinding-cn2pipelines.yaml
。apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: labels: name: cn2pipelines name: cn2pipelines roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cn2pipelines subjects: - kind: ServiceAccount name: cn2pipelines namespace: cn2pipelines
-
作成したファイルを適用します
clusterrolebinding-cn2pipelines.yaml
。kubectl apply -f clusterrolebinding-cn2pipelines.yaml -n cn2pipelines
サービス アカウントは、権限を使用して作成されました。
-
Kubernetes バージョン 1.24 以降の場合
Kubernetes バージョン 1.24 以降では、サービス アカウントを作成しても、シークレットは自動的に作成されません。
このサービス アカウントのトークンを手動で作成するには、次の手順に示します。
-
名前空間がまだ存在しない場合は、名前空間を作成します。
kubectl create ns cn2pipelines
-
という名前のサービス アカウントを作成します
cn2pipelines
。kubectl create sa cn2pipelines -n cn2pipelines
-
サービス アカウントのトークンを作成します
cn2pipelines
。kubectl create token cn2pipelines -n cn2pipelines --duration=999999h
-
サービス アカウントに適切な権限を付与する ClusterRole および ClusterRoleBinding を作成します。
-
ClusterRole を作成し、ファイルに名前を付けます
clusterrole-cn2pipelines.yaml
。apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: name: cn2pipelines name: cn2pipelines rules: - apiGroups: - '*' resources: - '*' verbs: - '*' - nonResourceURLs: - '*' verbs: - '*'
-
作成したファイルを適用します
clusterrole-cn2pipelines.yaml
。kubectl apply -f clusterrole-cn2pipelines.yaml -n cn2pipelines
-
ClusterRoleBinding ファイルを作成し、ファイルに名前を付けます
clusterrolebinding-cn2pipelines.yaml
。apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: labels: name: cn2pipelines name: cn2pipelines roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cn2pipelines subjects: - kind: ServiceAccount name: cn2pipelines namespace: cn2pipelines
-
作成したファイルを適用します
clusterrolebinding-cn2pipelines.yaml
。kubectl apply -f clusterrolebinding-cn2pipelines.yaml -n cn2pipelines
サービス アカウントは、権限を使用して作成されました。
-
-
コマンドを
describe
実行してトークンを取得します。kubectl describe sa cn2pipelines -n cn2pipelines
出力:
Name: cn2pipelines Namespace: cn2pipelines Labels: <none> Annotations: <none> Image pull secrets: <none> Mountable secrets: cn2pipelines-token-5szb6 Tokens: cn2pipelines-token-5szb6 Events: <none>
-
ステップ 5 の出力を取得します
Mountable secrets
。コマ ンドをdescribe secret
実行して、サービス アカウントの を取得bearerToken
します。kubectl describe secret cn2pipelines-token-5szb6 -n cn2pipelines
出力:
Name: cn2pipelines-token-5szb6 Namespace: cn2pipelines Labels: <none> Annotations: kubernetes.io/service-account.name: cn2pipelines kubernetes.io/service-account.uid: e5059023-7269-482a-870c-5c4ff175ba00 Type: kubernetes.io/service-account-token Data ==== namespace: 10 bytes token: eyJhbGciOiJSUzI1NiIsImtpZCI6InZQMkxOcWlOQjg5MElySUtiWGpPTWJVVGZNR3FQS3hnUDhyTDFHZjd3VFkifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJjaS1qZW5raW5zIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6ImNpLWplbmtpbnMtdG9rZW4tNXN6YjYiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiY2ktamVua2lucyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImU1MDU5MDIzLTcyNjktNDgyYS04NzBjLTVjNGZmMTc1YmEwMCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpjaS1qZW5raW5zOmNpLWplbmtpbnMifQ.DeAySlkf7dW6xzUH5bLeXc2lRPa_RMZ2bG4zGktpHyA2eDdM-nliCTpwhuBPbZ2fNeiaZb3Tl8h-MJNF7IygwXEHjW8ALfvUv4nBnmSMj9JW44PoPeMSCAnrtIXucy8hcGZN4K6i1w2n6ASSYAXyifwMOLy3-KfbY9PYErOb0eC34-cHkP-TQoV0o4ncA58kwOwut2DmkIKfH3gsOAY445wO4_WUeYuqO_JU0uQpyPaCRO9sLDhMlVcnp0TI7hvZu_DbVyRhy4b8QqJEj3h08j0lPGvFhvmCcUqTSLXbVtV9o62cqhd1q9pcFq5yAxmYpuwWjkOP8KuIsf71U070_w ca.crt: 1099 bytes
Kubeconfig の検証
kubeconfig ファイルを base64 として作成する前に、kubeconfig が管理クラスターから機能することを確認します。
CN2クラスタKuberconfigをBase64として作成
kubeconfig は、 の base64 フォーマット ファイル values.yaml
として必要です。
GitLabのパーソナルアクセストークンを作成する
個人用アクセス トークンを作成するには、GitLab から次の手順を使用します。
マウントパスとプロファイル
マウントパス フォルダーにマウントパスを配置し、マウントパス フォルダーにプロファイルを作成する必要があります。たとえば、マウントパスが で values.yaml
定義されている/opt/cn2_workflows
場合、 という名前/opt/cn2_workflows
のフォルダを作成します。
Git Server フォルダにサンプルコンフィグマップを作成する
CN2パイプラインをインストールする前にサンプルのConfigMapを作成する必要があります。この構成マップは、CN2パイプラインインストールの一部としてArgo CDによって適用されます。
OpenShift 導入へのイングレスとアップデート/etc/ホストの適用
「OpenShiftの追加の前提条件のみ」で説明されているように、CN2クラスターでこれらの手順を実行して、イングレスコンポーネントを展開します。