2024年3月31日日曜日

Fargate(コンテナのログイン方法について)

Fargateで稼働しているコンテナは、SSMサービスを利用して

ログインすることができる。

ハマってしまったので、備忘録を記載。




ECSのタスクロール用のポリシーを作成:













新たにロールを作成:

①ユースケースの検索窓に「Elastic Container Service」を入力後、「Elastic Container Service Task」を選択

②許可ポリシーに上記で作ったポリシーを指定する



タスク定義の更新を行う:

以下のタスクロールの追加を忘れずに!!














作成済みのサービスの停止 > サービスの再作成を行う

  ->これを行わないと以下のエラーになるので、注意!!




🔸SSMのインストール:

インストール手順①

curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac/sessionmanager-bundle.zip" -o "sessionmanager-bundle.zip"


インストール手順②

unzip sessionmanager-bundle.zip


インストール手順③

sudo ./sessionmanager-bundle/install -i /usr/local/sessionmanagerplugin -b /usr/local/bin/session-manager-plugin


重要:

cloudshellの場合、再起動を行うこと!!(コマンドが有効化されないようなので)


以下、実施する;

session-manager-plugin


注意:

タイミングで、以下のエラーが出てしまいハマることがあった(Cloud Shellの場合)

     ->何回か、CloudShellの再起動したり、ECSサービスの再起動など(新しいデプロイの強制などの操作を含め)

   を行いやっと改善したりでハマりやすい!

-bash: /usr/local/bin/session-manager-plugin: cannot execute binary file: Exec format error





ECSExecを有効化:

aws ecs update-service --region ap-northeast-1 --cluster クラスタ名 --service サービス名 --enable-execute-command




以下、サービスの更新を行う(多分。実施した方がよい手順)













以下、新しいデプロイの強制にする(多分。実施した方がよい手順)




コンテナにログインする:

aws ecs execute-command --cluster クラスタ名 --container コンテナ名 --task タスクID --command "/bin/sh" --interactive




以下、コンテナにログインした様子(2)







2023年10月1日日曜日

Metallb

参照先:
https://metallb.universe.tf/installation/



導入方法は、ArgoCD経由でHelmを使った方法にする。(以下、導入イメージ)











 





以前に記載したconfigをデプロイすると、IPの割り当てが出来ていなく
調べていたら、L2Advertisementの記載が別途必要になったようだ。。



2023年8月20日日曜日

terraform(doesn't match any of the checksums previously recorded in the dependency lock file; for more information)

terraform init実施後に、以下のメッセージが出た場合
.terraform.lock.hclのハッシュ値に問題があると起こる現象になる。





対処方法:

以下のコマンドを投入して、
terraform providers lockの.terraform.lock.hclのハッシュ値を再生成する









conflicts(github)の対処方法 for vs-code

git上で、conflicts が発生した場合
vs codeにて、対処する場合、以下の赤枠から選択して処理を行う 











オプション内容
Accept Current ChangeCurrent Changeの内容を残す
(Incomming Changeや余計な記号は消す)
Accept Incoming ChangeIncomming Changeの内容を残す
(Current Changeや余計な記号は消す)
Accept Both Change両方の内容を残す
(余計な記号は消す)
Compare Changes左右のウィンドウで変更点を比較する

2023年8月12日土曜日

terraform(タスク定義ファイル:json形式)に変数を埋め込む方法について

 

variable.tfで記載した変数(container_name)を以下のタスク定義ファイルに呼び出す
方法を模索してみた。


以下、variable.tfでterraformの変数を記載するファイルになる。






次に、以下、赤枠にtemplatefile関数を使ってjsonファイル形式のタスク定義と
タスク定義に記載する変数(container)とvariable.tfで記載した変数を紐付けした記載を行う
(例:container = var.container_name)









次にタスク定義に変数を以下のように記載を行う。


2023年7月26日水曜日

VS Codeのターミナル上でGitブランチ名を表示させる方法

1).bashrcの末端に追記を行う
vi ~/.bashrc


2)以下を追記する
-----追記内容------
# For Bash
export PS1="\u@\h \W \[\e[32m\]git-branch->$(git branch 2>/dev/null | grep '^*' | colrm 1 2)\[\e[00m\] $"

2023年7月22日土曜日

Terraform M1 Macでterraform initでコケる件

 terraform initを実施すると、 Error: Incompatible provider versionというエラーが出て
デプロイが出来ず困った。






以下のTFENV_ARCH=amd64を追記する事で、terraform initが実行することが出来た。 TFENV_ARCH=amd64 tfenv install 1.5.3

2023年7月10日月曜日

apiのバージョン確認:k8s

 以下のコマンドで、現在のapiのバージョンが確認できる。

コマンド: kubectl api-resources

istio1.18(helmでの導入方法)

参照先:
https://istio.io/latest/docs/setup/install/helm/

istioをhelm形式で導入を行う
(istioコマンドでの導入方法だと、管理コストが上がるためhelmでの導入に変更)


手順:
helm repo add istio https://istio-release.storage.googleapis.com/charts
helm repo update

helm install https://istio-release.storage.googleapis.com/charts istio --namespace istio --create-namespace
kubectl create namespace istio-system

helm install istio-base istio/base -n istio-system --set defaultRevision=default

helm ls -n istio-system

helm install istiod istio/istiod -n istio-system --wait

helm ls -n istio-system
helm status istiod -n istio-system

kubectl get deployments -n istio-system --output wide

2023年5月21日日曜日

S3 クロスリージョンレプリケーション(Terrafrom)

 

teerraformにて、東京リージョン、大阪リージョンにて、
S3 クロスリージョンレプリケーションの記載を行なってみる。



◾️構成図









以下、terraformで、S3 クロスレプリケーションの記載方法になる。

provider "aws" {
region = "ap-northeast-1"
}

provider "aws" {
alias = "osaka"
region = "ap-northeast-3"
}


######################################
# Iam(aws_iam_role_policy_attachment)
#######################################
resource "aws_iam_role_policy_attachment" "replication" {
role = aws_iam_role.replication.name
policy_arn = aws_iam_policy.replication.arn
}

######################################
# Iam(aws_iam_role)
#######################################
resource "aws_iam_role" "replication" {
name = "tf-iam-role-replication-12345"
assume_role_policy = data.aws_iam_policy_document.assume_role.json
}

data "aws_iam_policy_document" "assume_role" {
statement {
effect = "Allow"
principals {
type = "Service"
identifiers = ["s3.amazonaws.com"]
}
actions = ["sts:AssumeRole"]
}
}

#######################################
# Iam(aws_iam_policy)
#######################################
resource "aws_iam_policy" "replication" {
name = "tf-iam-role-policy-replication-12345"
policy = data.aws_iam_policy_document.replication.json
}

data "aws_iam_policy_document" "replication" {
statement {
effect = "Allow"
actions = [
"s3:ListBucket",
"s3:GetReplicationConfiguration",
"s3:GetObjectVersionForReplication",
"s3:GetObjectVersionAcl",
"s3:GetObjectVersionTagging",
"s3:GetObjectRetention",
"s3:GetObjectLegalHold"
]
resources = [
"${aws_s3_bucket.source.arn}",
"${aws_s3_bucket.destination.arn}",
"${aws_s3_bucket.source.arn}/*",
"${aws_s3_bucket.destination.arn}/*"
]
}
statement {
effect = "Allow"
actions = [
"s3:ReplicateObject",
"s3:ReplicateDelete",
"s3:ReplicateTags",
"s3:ObjectOwnerOverrideToBucketOwner",
]
resources = [
"${aws_s3_bucket.destination.arn}/*",
"${aws_s3_bucket.source.arn}/*"
]
}
}


#########################################
# S3(aws_s3_bucket)destination
#########################################
resource "aws_s3_bucket" "destination" {
bucket = "tf-test-bucket-destination-tokyo"
}

##########################################
# S3(aws_s3_bucket_versioning)destination
##########################################
resource "aws_s3_bucket_versioning" "destination" {
bucket = aws_s3_bucket.destination.id
versioning_configuration {
status = "Enabled"
}
}


#####################################################
# S3(aws_s3_bucket_replication_configuration)destination
#####################################################
resource "aws_s3_bucket_replication_configuration" "destination" {
depends_on = [aws_s3_bucket_versioning.destination]
role = aws_iam_role.replication.arn
bucket = aws_s3_bucket.destination.id
rule {
id = "foobar2"
status = "Enabled"
filter {
prefix = ""
}
delete_marker_replication {
status = "Enabled"
}
destination {
bucket = aws_s3_bucket.source.arn
storage_class = "STANDARD"
replication_time {
status = "Enabled"
time {
minutes = 15
}
}
metrics {
event_threshold {
minutes = 15
}
status = "Enabled"
}
}
}
}


#######################################
# S3(aws_s3_bucket)Source
#######################################
resource "aws_s3_bucket" "source" {
provider = aws.osaka
bucket = "tf-test-bucket-source-osaka"
}

########################################
# S3(aws_s3_bucket_versioning)Sorce
########################################
resource "aws_s3_bucket_versioning" "source" {
provider = aws.osaka
bucket = aws_s3_bucket.source.id
versioning_configuration {
status = "Enabled"
}
}


#####################################################
# S3(aws_s3_bucket_replication_configuration)source
#####################################################
resource "aws_s3_bucket_replication_configuration" "source" {
provider = aws.osaka
depends_on = [aws_s3_bucket_versioning.source]
role = aws_iam_role.replication.arn
bucket = aws_s3_bucket.source.id
rule {
id = "foobar"
status = "Enabled"
filter {
prefix = ""
}
delete_marker_replication {
status = "Enabled"
}
destination {
bucket = aws_s3_bucket.destination.arn
storage_class = "STANDARD"
replication_time {
status = "Enabled"
time {
minutes = 15
}
}
metrics {
event_threshold {
minutes = 15
}
status = "Enabled"
}
}
}
}

#####################################################
# aws_s3control_multi_region_access_point
#####################################################
resource "aws_s3control_multi_region_access_point" "example" {
details {
name = "example"

region {
bucket = aws_s3_bucket.destination.id
}

region {
bucket = aws_s3_bucket.source.id
}
}
}



2023年5月6日土曜日

terraform(Moduleでの変数の書き方)

moduleで変数を定義する方法を模索してみる。 


1)以下、モジュールに赤枠のように変数を定義する



















2)モジュール用にvariables.tf(変数用に定義するファイル)を作成する
上記のモジュールで定義した変数の記載を行う


















3)次にモジュールの参照先のリソースファイルvariable.tfに変数を記載する
以下、記述内容は、上記で作成した変数を参照する記載する記載となっている
(変数に記載が無いが、モジュール用に作成した変数が入っている)






4)リソースファイル用に記載した変数を以下のresourseに反映させる



ハッキングツール一覧(ホワイトハッカー編)

  1. ポート・ネットワークスキャン系 Nmap :標準。ポート・サービス検出・OS推定まで。 # 単純なポートスキャン nmap 192.168.1.10 # 開いているポートとサービスを詳細にスキャン nmap -sV -O 192.168.1.10 # 複数ホストをスキャ...