GeekFactory

int128.hatenablog.com

aws

Terraform Moduleを用いたAWSにおけるGitLab Runnerの運用

GitLabにはCI/CDの機能が統合されています.GitLab CI/CDではGitLab本体とは別のGitLab Runnerと呼ばれるノードでビルドを実行します.GitLab RunnerはJenkinsでいうJenkins Agentと同様に,普通のPCで実行したり,クラウドでDockerコンテナとして実行したり…

NGINX Ingressで複数ドメインを1つのALBに集約する

AWSでKubernetesを利用する場合、Ingress Controllerの選択肢にはaws-alb-ingress-controllerやkube-ingress-aws-controller、nginx-ingressなどがあります。 aws-alb-ingress-controllerやkube-ingress-aws-controllerではKubernetesのレイヤでALBを管理で…

TerraformでプライベートサブネットとNATゲートウェイを管理する

AWSのNATゲートウェイ構成をTerraformで管理する方法を調べたのでまとめます。 NATゲートウェイ構成とは下記のような構成を指します。 次の図は、NAT ゲートウェイを使用した VPC のアーキテクチャを示しています。メインルートテーブルは、プライベートサブ…

Upgrade to Kubernetes 1.9 using kops

個人用のKubernetesクラスタを1.9.3に更新したのでログを残します。 % kops version Version 1.9.0 kops upgrade cluster コマンドでS3の構成情報を更新します。 % kops upgrade cluster Using cluster from kubectl context: hello.k8s.local ITEM PROPERTY…

AWS CodeBuildとJenkinsの連携

TL;DR AWS CodeBuildとJenkinsを連携させると、これまでJenkins Agentで実行していたビルド処理をAWS CodeBuildに置き換えることができます。以下のメリットがあります。 AWS CodeBuildは無限に*1スケールするので、ビルドキューの待ち行列がなくなる ビルド…

AWS CodeBuildとGitBucketの連携

TL;DR GitBucketはGitHub API互換なので、GitHub Enterpriseとして振る舞うことができる。 AWS CodeBuildはGitHub Enterpriseに対応している。 CodeBuildからGitBucketにgit cloneしてビルドを実行できる。 今のところWebhookは使えない。 Getting Started G…

EBS volume type standard not working on Kubernetes

The EBS volume type standard seems not working as a storage class on Kubernetes. Reproduce the issue Adding the following storage class: kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: standard labels: k8s-addon: storage-a…

kopsでルートボリュームタイプにstandardを指定できるようになった

kopsではEC2のルートボリュームに割り当てるボリュームタイプに gp2 か io1 しか指定できない問題がありました。検証用途では standard で十分なので、standard も指定できるように入力値チェックを修正するPRを送りました。 github.com 以下のようにインス…

Kubernetes nodesをMulti-AZからSingle-AZに移行した

kopsで運用しているKubernetes nodesをMulti-AZからSingle-AZに移行したので作業メモを残しておきます。 us-west-2b や us-west-2c にあるNodesとPersistent Volumesを us-west-2a に移行します。Masterは us-west-2a のままにします。 kops 1.8.0, Kubernet…

インターネットとVPC内部から同一FQDNでアクセス可能な構成

aws

AWSでALBを使う場合に、Security Groupでインターネットからアクセス可能なIPアドレスを制限しながら、VPC内部から同じFQDNでサービスにアクセスできるようにしたい。 TL;DR Requirements: インターネットから https://api.example.com でサービスにアクセス…

AWSでメールを受信してLambdaで処理する

AWSでメールを受信してLambdaで処理するには以下の方法があります。 SES→S3, SES→Lambda SES→SNS→Lambda 大きなメールを受信したい場合は1を選びます。1はS3にメールを格納してから読みに行くため、サイズの大きなメールも受信できます。2では160kB以下のメ…

CloudFront→ELB→EC2構成におけるIPアドレスのアクセス制御

AWSでCloudFront → ELB → EC2の構成を採用する場合に、IPアドレスによるアクセス制御を行う方法を説明します。 方法1: EC2上のWebサーバによるアクセス制御 CloudFrontやELBはリクエストを受けると x-forwarded-for ヘッダにクライアントのIPアドレスを付与…

GradleからS3に成果物を公開する

GradleからS3に成果物を公開する方法を調べたのでメモです。あらかじめIAMユーザを作成し、キーを取得しておく必要があります。 S3 Maven Repositoryに公開する Gradleのmaven-publishプラグインを使うと、S3のMavenリポジトリに成果物を公開できます。詳し…

ACMのドメイン所有確認メールをSESで受信

aws

ACM(Amazon Certificate Manager)でSSL証明書を発行するには、ドメイン管理者に送付されるメールで承認をクリックする必要があります。ドメインの管理組織が異なる場合やメールサーバを用意していない場合は、ドメイン管理者へのメールをSESで受け取ること…

Amazon Linuxの時刻同期にchronyを使う

Amazon Linuxではntpdによる時刻同期が用意されていますが、EPEL(Extra Packages for Enterprise Linux)リポジトリに入っているchronyも使えます。chronyはFedora 16から採用されている時刻同期デーモンです。設定ファイルや引数がシンプルで分かりやすい…

Amazon LinuxとZabbixで始める運用監視

Amazon LinuxとZabbixで始める監視サーバ - GeekFactoryのリメイクです。Amazon Linux 2011.09に合わせて書き直しました。 必要なもの Amazon EC2 Instance Amazon Linux 2011.09 Amazon Linux 2011.09からFedora EPEL(Extra Packages for Enterprise Linux…

Amazon LinuxとZabbixで始める監視サーバ

クラウドから自宅サーバを監視するのがマイブームです。ここではAmazon EC2にZabbixをインストールする方法を紹介します。 前提条件 EC2上でLinuxインスタンスを起動します。今回は Micro instance, Amazon Linux x86_64 を使用しました。以下が正常に動作す…