私はKubernetesに慣れており、EKSスタックにサービスを展開するためのAWS Codepipelineを作成しようとしています。
私は次のものです これは チュートリアルで、ロールの作成と権限の追加などすべての手順に従っていますCodeBuildが可能になります。 EKSと話す。
私が直面している問題は、Codepipelineが実行されている場合、codeBuildの段階で、以下のコマンドで失敗します。
kubectl apply -f hello-k8s.yml
_
そしてこのエラーを与える
[Container] 2019/12/04 07:41:43 Running command kubectl apply -f hello-k8s.yml
unable to recognize "hello-k8s.yml": Unauthorized
unable to recognize "hello-k8s.yml": Unauthorized
_
私はチュートリアルに従ってユーザー/役割を追加するためのすべてのステップを使用したので、資格情報が問題になっているかどうかは非常によくわかりません。
誰もがこれを助けてもらえますか?
YAMLの展開CodeBuildからKubernetesにマニフェストを展開するには、次の手順を実行します。
高水準プロセスには、次の手順が含まれています。
CodeBuildのIAMサービスロールを作成します
"AWS-Auth" ConfigMapを使用してEKSでCodeBuildサービスロールをマッピングします。
コードリポジトリにソースファイルを作成します
CodeBuildプロジェクトを作成して起動します
必要なオブジェクトがEKSクラスタで作成されていることを確認します
次のコマンドを実行して、CodeBuildサービスロールを作成し、必要なポリシーを添付します。
TRUST = "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Principal\": { \"Service\": \"codebuild.amazonaws.com\" }, \"Action\": \"sts:AssumeRole\" } ] }"
$ echo '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "eks:Describe*", "Resource": "*" } ] }' > /tmp/iam-role-policy
$ aws iam create-role --role-name CodeBuildKubectlRole --assume-role-policy-document "$TRUST" --output text --query 'Role.Arn'
$ aws iam put-role-policy --role-name CodeBuildKubectlRole --policy-name eks-describe --policy-document file:///tmp/iam-role-policy
$ aws iam attach-role-policy --role-name CodeBuildKubectlRole --policy-arn arn:aws:iam::aws:policy/CloudWatchLogsFullAccess
$ aws iam attach-role-policy --role-name CodeBuildKubectlRole --policy-arn arn:aws:iam::aws:policy/AWSCodeBuildAdminAccess
_
'AWS-Auth' ConfigMapを編集し、CodeBuildサービスロールのロールマッピングを追加します。
$ vi aws-auth.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: aws-auth
namespace: kube-system
data:
mapRoles: |
- rolearn: arn:aws:iam::AccountId:role/devel-worker-nodes-NodeInstanceRole-14W1I3VCZQHU7
username: system:node:{{EC2PrivateDNSName}}
groups:
- system:bootstrappers
- system:nodes
- rolearn: arn:aws:iam::AccountId:role/CodeBuildKubectlRole
username: build
groups:
- system:masters
$ kubectl apply -f aws-auth.yaml
_
次のようにサンプルファイルを使用してGitHub/CodeCommitでリポジトリを作成します。
.
├── buildspec.yml
└── deployment
└── pod.yaml
_
サンプルリポジトリはここにあります。 https://github.com/shariqmus/codebuild-tokes
ノート:
Buildspec.ymlファイルは、Kubectl、AWS-IAMオーベクチャツールをインストールし、CodeBuild環境でKubectlを設定します
16行目の正しい領域とcluster_nameでbuildspec.ymlファイルを更新します。
展開yamlファイルを "展開"ディレクトリに追加します
CodeBuildコンソールを開きます
[ビルドプロジェクトの作成]ボタンをクリックします
プロジェクトに名前を付けます
添付ファイルを追加したCodeCommitリポジトリを使用します。 "buildspec.yml"と "pod.yaml"
管理Image> Ubuntu> Standard 1.0を使用してください
「役割名」で、「CodeBuildKubectLrole」を選択します。
[ビルドプロジェクトの作成]ボタンをクリックします
ビルドを開始するには、「スタートビルド」ボタンを作成します
これを簡単なコマンドで確認できます。
$ kubectl get all --all-namespaces
_