by shigemk2

当面は技術的なことしか書かない

HCP Terraform AWS OIDC 連携

sts:AssumeRoleWithWebIdentityなポリシーのロールを作ってARNを変数に入れるだけ ARNだからロール名だけでは足りない

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "OIDC_PROVIDER_ARN"
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
                "StringEquals": {
                    "SITE_ADDRESS:aud": "AUDIENCE_VALUE",
                    "SITE_ADDRESS:sub": "organization:ORG_NAME:project:PROJECT_NAME:workspace:WORKSPACE_NAME:run_phase:RUN_PHASE"
                }
            }
        }
    ]
}
  • TFC_AWS_PROVIDER_AUTH
  • TFC_AWS_RUN_ROLE_ARN

persol-serverworks.co.jp

developer.hashicorp.com

Istio トラフィック制御カスタムリソース

  • VirtualService
  • DestinationRule
  • ServiceEntry
  • Gateway
  • Sidecar

  • VirtualService トラフィックの搬送時において、その通信経路におけるメッシュの振る舞いを定義 VirtualServiceを使うことで、特定の経路に対してリトライを有効にしたり、タイムアウト時間を設定したりできる

  • DestinationRule サービスへのトラフィック搬送が完了したあと、トラフィックが実際にPodに届くまでの振る舞いを定義 例えば、Podのレプリカ数が複数ある場合の、ロードバランシングのアルゴリズムや、コネクションプーリングのサイズを設定できる
  • ServiceEntry マニュアルでトラフィックの配送先となる宛先を作成するリソース 例えば、サービスメッシュの外部(Kubernetesクラスタ外も含む)にあるなんらかのAPIに対してリクエストを送信したい場合に多く使われる
  • Gateway サービスメッシュの外からのHTTP/TCPトラフィックを受け入れる入口を定義するリソース 外部に対して公開するポートや利用するプロトコルなどを定義
  • Sidecar サービスのPod内にサイドカーコンテナとして封入された、Envoyの振る舞いを設定するリソース 通常、Envoyはデフォルトの設定で自動的にPodに追加されるが、それらのEnvoyに対して追加の設定を行うことができる。例えば、あるnamespaceにあるEnvoyに対して、特定の外部サービスへのリクエストを許可する設定を追加するといったことが可能

P374-375

book.impress.co.jp

CertificateStatus フィールド一覧

フィールド Optional 説明
conditions []CertificateCondition Yes 証明書の状態を示す condition のリスト。既知の type は ReadyIssuing
lastFailureTime meta/v1.Time Yes 直近の発行が失敗した場合にのみセットされ、失敗時刻を保持する。次回発行までの遅延は time.Hour * 2 ^ (failedIssuanceAttempts - 1) で計算される。発行が成功するとこのフィールドはクリアされる
notBefore meta/v1.Time Yes spec.secretName で指定された Secret に格納されている証明書の有効開始日時
notAfter meta/v1.Time Yes spec.secretName で指定された Secret に格納されている証明書の有効期限
renewalTime meta/v1.Time Yes 次回の証明書更新予定時刻。未設定の場合は更新がスケジュールされていない
revision int Yes 現在発行されている証明書のリビジョン番号。CertificateRequest 作成時にはこの値 +1 が cert-manager.io/certificate-revision アノテーションとしてセットされる。発行完了時に CertificateRequest のアノテーション値がこのフィールドに反映される。これにより、リクエストが現在の発行サイクルのものか過去のものかを判別できる
nextPrivateKeySecretName string Yes 次回の証明書発行に使用される秘密鍵を格納する Secret 名。keymanager コントローラーが Issuing condition を True にセットした際に自動設定され、Issuing が未設定または False になると自動クリアされる
failedIssuanceAttempts int Yes 連続して失敗した発行試行の回数。発行成功時にクリアされ、未設定の状態で発行が失敗すると 1 にセットされる。次回発行までの遅延は time.Hour * 2 ^ (failedIssuanceAttempts - 1) で計算される(指数バックオフ)

発行失敗時のバックオフ計算例

failedIssuanceAttempts 次回リトライまでの待ち時間
1 1 時間
2 2 時間
3 4 時間
4 8 時間
5 16 時間

JSONPath での参照例

.status.conditions[?(@.type=="Ready")].status   → Ready の True/False
.status.notAfter                                 → 有効期限
.status.notBefore                                → 有効開始日時
.status.renewalTime                              → 次回更新予定時刻
.status.lastFailureTime                          → 直近の失敗時刻
.status.revision                                 → リビジョン番号
.status.failedIssuanceAttempts                   → 連続失敗回数
.status.nextPrivateKeySecretName                 → 次回用秘密鍵 Secret 名

cert-manager.io

kubectl custom-columns cert-manager

すべての証明書名とその duration プロパティーおよび renewBefore プロパティーをリスト

kubectl -A get certificate -o custom-columns=NAME:metadata.name,DURATION:spec.duration,RENEWBEFORE:spec.renewBefore

カスタムリソースのReadyの一覧

kubectl -A get certificate -o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name,READY:.status.conditions[0].status'

証明書更新予定時刻と証明書有効期限の一覧

kubectl -A get certificate --sort-by='.status.renewalTime' -o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name,READY:.status.conditions[0].status,RENEWAL:.status.renewalTime,NOT_AFTER:.status.notAfter'

www.ibm.com

kubernetes.io

Devin ACU memo

  • Agent Compute Units (ACU) は、Devin の作業量を測る指標
    • 1 回のセッションで消費される ACU の量は、次の要素に基づく
      • そのセッションで Devin が実行するアクションの回数と複雑さ
        • プランニング
        • タスクに必要なコンテキストの収集
        • タスク完了までの手順
        • ブラウザでの操作
        • コード実行
      • 仮想マシンの稼働時間とネットワーク帯域幅 (通常は ACU 消費全体のごく一部)

docs.devin.ai

Aggregation pipeline

MongoDBの集計操作で、データドキュメントやレコードをグループ化して計算結果を返す。SQLに似ている。

db.aggregate()db.collection.aggregate() にステージを渡す

各ステップは、前のステージの結果を受け取り、データをさらに処理した上で、そのデータを次のステージへの入力として送信する。集計処理では、サーバー上のインデックスを利用できる。

pronteff.com

集計プロセスの図