iT邦幫忙

2021 iThome 鐵人賽

DAY 21
0
tags: 鐵人賽 AWS Outposts ECS Task

建立叢集 Cluster

  • 從介面上建立叢集時

    • 取名字
    • 選定 Instance 機型(指定和 Outpost 上一樣)
    • 選定網段,選 Outpost 上的即可
  • 設置 Container instance IAM Role (ecsInstanceRole)

    • 用來授權那些被加進叢集的 EC2 可操作的資源
    • 如果沒有建立過,如下圖一樣讓他自動產生
    • arn:aws:iam::000000000000:role/ecsInstanceRole
      • 內含有 AmazonEC2ContainerServiceforEC2Role
      • 凡是被套用了這個角色的資源(如 EC2),逐項來看,能夠⋯⋯
        • 寫入 CloudWatch Logs

        • 讀取 EC2 (讀取 Tag,主要是要去抓 Instance Name)

        • 讀取 ECR (允許從 ECR 拉 Container Image)

        • 操作 ECS 的部分功能 (針對虛擬機的工作範疇制定)

    建立 Cluster 的關鍵步驟就只要選對網段而已!!

  • 等等創造出來的 Cluster 所使用的 EC2 有這樣的角色

設置 Task 之前的前置作業

  • 容器映像檔容器 之間的關係是
    • 映像檔就是一層一層、Read-onlyimage layer 所堆砌而成(千毅葛格最愛的漢堡)
    • 而容器則是那些個漢堡上面多加上一層 Read-writecontainer layer
  • 而在 ECS 的場景中,任務容器映像檔 的關係是
    • 描述如何運行容器
      • 要當成常駐的服務來運行(Service)、或是短暫的派工運作(Task)
      • 會定義容器的規格

    Fargate

    • 咖喱飯調理包、如何被裝在 免洗餐具裡的咖喱飯
      • Fargate 的運算是由 Region 上的運算池所提供
      • 價格以使用的 資源單價(vCPU 和 記憶體) 秒數 計費
        • 低消 60 秒
        • 從開始 pull image 的時候就會開始收錢
      • 更多關於 Fargate 的細節可以看 AWS 文件

    EC2

    • 咖喱飯調理包、如何被裝在 食堂盤子裡的咖喱飯
      • 開一台或一台以上的虛擬主機來做
      • Outposts 上的 EC2 可以選這個模式比較省錢

    External

上述的 Task 主要是用來設定要
「根據什麼容器映像檔」、「跑在什麼模式」、「掛什麼參數」、
要不要將這個運作中的容器「賦予 IAM Role」、「網路模式」等的配置

論 Task Role

  • 接下來看好了世界!! 只示範一次!
    • 砸瓦魯多!!!!
    • 要賦予運作的容器「news-grabber」,取得我先前放在「AWS Systems Manager 裡的 Parameter Store」的資料... 那是必要給這個容器權限。

設定 IAM Policies

  • 如果你有帳號,就點這個連結: https://console.aws.amazon.com/iamv2/home#/policies
  • 找到按鈕
  • 貼上這串 ... 根據你本人的設定做修改
    • 我把帳號改成 999999999999,如果你要拿去用,記得改成自己的帳號
    • 也要注意 region,因為我變數放在大阪所以是 ap-northeast-3
    • 從 SSM 和 Secret Manager 分別領取指定變數的能力如下所示
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameter*",
                "kms:Decrypt",
                "secretsmanager:GetSecretValue"
            ],
            "Resource": [
                "arn:aws:ssm:ap-northeast-3:999999999999:parameter/gmail_sender_addr",
                "arn:aws:ssm:ap-northeast-3:999999999999:parameter/gmail_sender_secret"
                "arn:aws:secretsmanager:ap-northeast-3:999999999999:secret:prod/key/xxx"
            ]
        }
    ]
}

我不當人類啦~99!!

新增政策

  • 幫政策取名字
    • 小字寫 Use alphanumeric and '+=,.@-_' characters. Maximum 128 characters. ,應該是可以做一個叫做 「3+11Policy@AWeSome」
    • 數字開頭和奇怪的標點就是讚啦,不知道眾多工程師們會不會牙起來 XD

    牙~牙~牙~!牙牙!牙牙!喔窩喔喔歐窩~我歐~喔歐~

  • 裡面要填什麼呢?先來看看我之前存的變數
  • 知道放在大阪、還有對應的變數名稱後,政策的內容如下:

新增角色

  • 如果你有帳號,就點這個連結:https://console.aws.amazon.com/iam/home#/roles$new?step=type
    • 要被允許的服務選 Elastic Container Service
    • 底下要選擇 Elastic Container Service Task
      • Allows ECS tasks to call AWS services on your behalf.
  • 把剛剛做好的 3+11 政策加進去
  • 還有 AmazonECSTaskExecutionRolePolicy
    • 搜尋 AmazonECSTaskExecutionRolePolicy 並打勾!
  • 再來幫這個角色取名字
  • 恭喜你完成 ECS Task Role 的建置,接下來繼續往下看

設置 Task

1. 取任務名字,設置任務角色,設置網路模式

  • 名字請自由發揮
  • 角色的部分上半部有說明囉
  • 網路模式的選擇
    • 主要是判斷容器要和什麼其他服務互動
    • 有沒有對外公開服務的必要
    • 不知道的話,先選預設值

2. 配置資源給任務

  • CPU 和 記憶體
    • 請斟酌使用

3. 配置容器映像檔

  • 上圖的藍色按鈕,叫你加入容器呢!!
  • 我的容器還沒好啊~~~
  • 再給我一分鐘!!!!!
  • 再給我一分鐘還是做不完啦,今天做不完了 QQ

下集待續!!!

  • 我們先前寫的那個發信程式
    • 幹了一些骯髒事

    看看那第三行,之前我的作法是,把 AWS KEY 和 SECRET 直接當作是給容器的環境變數

    • 我們上半部說明如何讓任務有權限去摸其他服務
    • 明天再來把容器包好

上一篇
【Day 20】ECS on Outposts 的限制
下一篇
【Day 22】ECS Task Definitions and setting of ECS provider
系列文
運用皮毛技術與 AWS 平台、打造雲端蘿蔔服務三十天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言