Menu Close

4.12.3. Git の SSH 認証の設定

パイプラインが SSH キーで設定されたリポジトリーからリソースを取得するには、そのパイプラインの SSH ベースの認証を設定する必要があります。

パイプラインの SSH ベースの認証を設定するには、secret.yamlserviceaccount.yaml、および run.yaml ファイルを、指定されたリポジトリーの SSH 秘密鍵からの認証情報を使用して更新します。このプロセスが完了すると、Pipeline はその情報を使用して指定されたパイプラインリソースを取得できます。

注記

Basic 認証ではなく SSH ベースの認証を使用することを検討してください。

手順

  1. SSH 秘密鍵 を生成するか、既存の秘密鍵をコピーします。これは通常 ~/.ssh/id_rsa ファイルで入手できます。
  2. secret.yaml ファイルで、ssh-privatekey の値を SSH 秘密鍵ファイルの名前に設定し、known_hosts の値を既知のホストファイルの名前に設定します。

    apiVersion: v1
    kind: Secret
    metadata:
      name: ssh-key 1
      annotations:
        tekton.dev/git-0: github.com
    type: kubernetes.io/ssh-auth
    stringData:
      ssh-privatekey: 2
      known_hosts: 3
    1
    SSH 秘密鍵が含まれるシークレットの名前。この例では、ssh-key になります。
    2
    SSH 秘密鍵の文字列を含むファイルの名前。
    3
    既知のホストの一覧を含むファイルの名前。
    注意

    秘密鍵を省略すると、Pipelines は任意のサーバーの公開鍵を受け入れます。

  3. オプション: カスタム SSH ポートを指定するには、annotation 値の最後に :<port number> を追加します。たとえば、tekton.dev/git-0: github.com:2222 などになります。
  4. serviceaccount.yaml ファイルで、ssh-key シークレットを build-bot サービスアカウントに関連付けます。

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: build-bot 1
    secrets:
      - name: ssh-key 2
    1
    サービスアカウントの名前。この例では、build-bot になります。
    2
    SSH 秘密鍵が含まれるシークレットの名前。この例では、ssh-key になります。
  5. run.yaml ファイルで、サービスアカウントをタスク実行またはパイプライン実行に関連付けます。

    • サービスアカウントをタスク実行に関連付けます。

      apiVersion: tekton.dev/v1beta1
      kind: TaskRun
      metadata:
        name: build-push-task-run-2 1
      spec:
        serviceAccountName: build-bot 2
        taskRef:
          name: build-push 3
      1
      Task run の名前。この例では、build-push-task-run-2 になります。
      2
      サービスアカウントの名前。この例では、build-bot になります。
      3
      タスクの名前。この例では、build-push になります。
    • サービスアカウントをパイプライン実行に関連付けます。

      apiVersion: tekton.dev/v1beta1
      kind: PipelineRun
      metadata:
        name: demo-pipeline 1
        namespace: default
      spec:
        serviceAccountName: build-bot 2
        pipelineRef:
          name: demo-pipeline 3
      1
      Pipeline Run の名前。この例では、demo-pipeline になります。
      2
      サービスアカウントの名前。この例では、build-bot になります。
      3
      Pipeline の名前。この例では、demo-pipeline になります。
  6. 変更を適用します。

    $ kubectl apply --filename secret.yaml,serviceaccount.yaml,run.yaml