Shinya Furuwata Blog http://blog.star-flare.com/ Be Next New Mon, 28 Dec 2020 23:11:41 +0000 ja hourly 1 https://wordpress.org/?v=5.7 Argo CDはじめました https://blog.star-flare.com/2020/12/24/start-gitops-using-argo-cd/ Thu, 24 Dec 2020 02:30:54 +0000 https://blog.star-flare.com/?p=1073 Argo CD CDとは、継続的デプロイ(Continuous Deploy)のことですね。 Argo CDは、GitOpsとよばれる環境を提供します。 Argo CD - Declarative GitOps CD f […]

The post Argo CDはじめました first appeared on Shinya Furuwata Blog.]]>
Argo CD

CDとは、継続的デプロイ(Continuous Deploy)のことですね。
Argo CDは、GitOpsとよばれる環境を提供します。

Argo CD - Declarative GitOps CD for Kubernetes

アーキテクチャは、サイトにある下の画像のようなものになります。

アーキテクチャ

Architectural Overview - Argo CD - Declarative GitOps CD for Kubernetes

Argo CD CLIをセットアップ

始まる前の準備です。

$ brew install argocd

セットアップ

ネームスペースを作成

$ kubectl create namespace argocd
namespace/argocd created

Argo CDをアプライ

$ kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
Warning: apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io created
serviceaccount/argocd-application-controller created
serviceaccount/argocd-dex-server created
serviceaccount/argocd-redis created
serviceaccount/argocd-server created
role.rbac.authorization.k8s.io/argocd-application-controller created
role.rbac.authorization.k8s.io/argocd-dex-server created
role.rbac.authorization.k8s.io/argocd-redis created
role.rbac.authorization.k8s.io/argocd-server created
clusterrole.rbac.authorization.k8s.io/argocd-application-controller created
clusterrole.rbac.authorization.k8s.io/argocd-server created
rolebinding.rbac.authorization.k8s.io/argocd-application-controller created
rolebinding.rbac.authorization.k8s.io/argocd-dex-server created
rolebinding.rbac.authorization.k8s.io/argocd-redis created
rolebinding.rbac.authorization.k8s.io/argocd-server created
clusterrolebinding.rbac.authorization.k8s.io/argocd-application-controller created
clusterrolebinding.rbac.authorization.k8s.io/argocd-server created
configmap/argocd-cm created
configmap/argocd-gpg-keys-cm created
configmap/argocd-rbac-cm created
configmap/argocd-ssh-known-hosts-cm created
configmap/argocd-tls-certs-cm created
secret/argocd-secret created
service/argocd-dex-server created
service/argocd-metrics created
service/argocd-redis created
service/argocd-repo-server created
service/argocd-server created
service/argocd-server-metrics created
deployment.apps/argocd-dex-server created
deployment.apps/argocd-redis created
deployment.apps/argocd-repo-server created
deployment.apps/argocd-server created
statefulset.apps/argocd-application-controller created

ポートフォアードを設定

$ kubectl port-forward svc/argocd-server -n argocd 8080:443

https://localhost:8080 にアクセス

ログインをセットアップする

ログインができないので、パスワードを設定します。
デフォルトで
admin
ユーザーが用意されています。

$ kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server -o name | cut -d'/' -f 2

argocd-server-547d9bb879-bfq4v
$ argocd login localhost:8080
WARNING: server certificate had error: x509: certificate signed by unknown authority. Proceed insecurely (y/n)? y
Username: admin
Password:
FATA[0010] rpc error: code = Unauthenticated desc = Invalid username or password

ここはエラーになります。

argo-cd/faq.md at master · argoproj/argo-cd · GitHub
にあるように

adminユーザーのパスワードを password に変更します。

kubectl -n argocd patch secret argocd-secret \
  -p '{"stringData": {
    "admin.password": "$2a$10$rRyBsGSHK6.uc8fntPwVIuLVHgsAhAX7TcdrqW/RADU0uh7CaChLa",
    "admin.passwordMtime": "'$(date +%FT%T%Z)'"
  }}'

成功すると

secret/argocd-secret patched

となります。その後、再度試すと

$ argocd login localhost:8080
WARNING: server certificate had error: x509: certificate signed by unknown authority. Proceed insecurely (y/n)? y
Username: admin
Password:
'admin' logged in successfully
Context 'localhost:8080' updated

成功しました!

Web画面でログイン

これで、ひとまず終了です。

The post Argo CDはじめました first appeared on Shinya Furuwata Blog.]]>
Argo Workflowはじめました https://blog.star-flare.com/2020/12/22/start-argo-workflow/ Tue, 22 Dec 2020 10:05:08 +0000 https://blog.star-flare.com/?p=1058 Argo Workflowって? Get stuff done with Kubernetes | Argo kubernetesで動かすワークフローエンジンです。 なぜか、イカイカ。 minikube + Argo W […]

The post Argo Workflowはじめました first appeared on Shinya Furuwata Blog.]]>
Argo Workflowって?

Get stuff done with Kubernetes | Argo

kubernetesで動かすワークフローエンジンです。
なぜか、イカイカ。

minikube + Argo Workflowであそんでみる。

argoproj-argo/demo.md at master · arrikto/argoproj-argo · GitHub
を参考します。

Argoのネームスペースを作成

$ kubectl create namespace argo
namespace/argo created

ネームスペースを確認

$ kubectl get namespace
NAME                   STATUS   AGE
argo                   Active   11m
default                Active   24h
kube-node-lease        Active   24h
kube-public            Active   24h
kube-system            Active   24h
kubernetes-dashboard   Active   24h

Argo setup

$ brew install argoproj/tap/argo
$ argo version
$ curl https://raw.githubusercontent.com/argoproj/argo/v2.2.1/manifests/install.yaml|sed "s/apps\/v1beta2/apps\/v1/g"|kubectl apply -n argo -f -

apps/v1beta1, apps/v1beta2

apps/v1
変わっため、下記に変更してます。

kubectl create rolebinding default-admin --clusterrole=admin --serviceaccount=default:default

Argo start

kubectl port-forward deployment/argo-ui 8001:8001 --namespace argo

localhost:8001 にアクセス

workflow を投げる

$ kubectl create -f https://raw.githubusercontent.com/argoproj/argo/master/examples/hello-world.yaml

workflow.argoproj.io/hello-world-zg54m created
$ argo submit https://raw.githubusercontent.com/argoproj/argo/master/examples/hello-world.yaml
Name:                hello-world-58f4w
Namespace:           default
ServiceAccount:      default
Status:              Pending
Created:             Tue Dec 22 19:13:42 +0900 (now)

argoコマンドの方が結果がわかりやすいですね。

The post Argo Workflowはじめました first appeared on Shinya Furuwata Blog.]]>
Kubernetesはじめました https://blog.star-flare.com/2020/11/05/started-kubernetes-in-work/ Thu, 05 Nov 2020 00:18:23 +0000 https://blog.star-flare.com/?p=1049 Kubernetesはじめました いま、Kubernetesやっているので Macで環境作るときに minikubeを使ったので作業をメモします。 brew install minikube minikube start […]

The post Kubernetesはじめました first appeared on Shinya Furuwata Blog.]]>
Kubernetesはじめました

いま、Kubernetesやっているので
Macで環境作るときに
minikubeを使ったので作業をメモします。

brew install minikube
minikube start
minikube dashboard

Kubernetesが打ちづらい。。。
GUIはやっぱりいい。

The post Kubernetesはじめました first appeared on Shinya Furuwata Blog.]]>
NEOGEO Arcade Stick Proのアップデート https://blog.star-flare.com/2020/10/20/update-neogeo-arcade-stick-pro/ Tue, 20 Oct 2020 08:13:38 +0000 https://blog.star-flare.com/?p=1045 はじめに NEOGEO Arcade Stick Pro を買ったんですが、アップデートが出ていたのでアプデしました。 はお安くなったときに買えたので、今思うとラッキーでした。 本家のアップデートの情報 NEOGEO A […]

The post NEOGEO Arcade Stick Proのアップデート first appeared on Shinya Furuwata Blog.]]>
はじめに

NEOGEO Arcade Stick Pro

を買ったんですが、アップデートが出ていたのでアプデしました。

はお安くなったときに買えたので、今思うとラッキーでした。

本家のアップデートの情報

アップデート方法

  1. USBメモリを用意
  2. サイトからzipファイルをダウンロード
  3. zipファイルを解凍
  4. NEOGEO Arcade Stick ProにUSBを差して、アプデする。

ちょっとハマったのは、フォルダ構成でした。
下記の通りにしたら動きました。

cdkey
┗XXXXXXXXX.cdk

最後に

アプデがまだあるのかなーと期待しながら見守ります。

The post NEOGEO Arcade Stick Proのアップデート first appeared on Shinya Furuwata Blog.]]>
機械学習の参考データ https://blog.star-flare.com/2020/10/06/sample-data-of-machine-learning/ Mon, 05 Oct 2020 21:26:33 +0000 https://blog.star-flare.com/?p=1040 機械学習の参考データ 機械学習が必要そうなので、まずはデータからと考え探していたらとてもいいのが見つかったのでメモ。 機械学習向けデータセット一覧 | Lionbridge AI こういうのを作っていただけると本当に助か […]

The post 機械学習の参考データ first appeared on Shinya Furuwata Blog.]]>
機械学習の参考データ

機械学習が必要そうなので、まずはデータからと考え探していたらとてもいいのが見つかったのでメモ。

機械学習向けデータセット一覧 | Lionbridge AI

こういうのを作っていただけると本当に助かります。

The post 機械学習の参考データ first appeared on Shinya Furuwata Blog.]]>
使ってるエディタまとめ(2020年版) https://blog.star-flare.com/2020/06/22/my-use-editor-2020/ Mon, 22 Jun 2020 13:31:56 +0000 https://blog.star-flare.com/?p=1027 使ってるエディタまとめ(2020年版) 今Macで使ってるエディタをまとめました。 もう6月だけど(笑) Visual Studio Code – コード エディター | Microsoft Azure Atom

The post 使ってるエディタまとめ(2020年版) first appeared on Shinya Furuwata Blog.]]>
使ってるエディタまとめ(2020年版)

今Macで使ってるエディタをまとめました。
もう6月だけど(笑)

The post 使ってるエディタまとめ(2020年版) first appeared on Shinya Furuwata Blog.]]>
WordPressをDockerで運用する方法 https://blog.star-flare.com/2020/05/15/wordpress_with_docker/ Thu, 14 May 2020 20:01:29 +0000 https://blog.star-flare.com/?p=1016 WordPressをDockerで運用してるので、その方法を公開します。 前置きがすごいですが、内容はすごくありません。(笑) ベースはwordpressの最新版 wp-cliをインストール WebP Expressプラ […]

The post WordPressをDockerで運用する方法 first appeared on Shinya Furuwata Blog.]]>
WordPressをDockerで運用してるので、その方法を公開します。

前置きがすごいですが、内容はすごくありません。(笑)

  • ベースはwordpressの最新版
  • wp-cliをインストール
  • WebP Expressプラグインとimage/webpのフォーマット対応

詳しくは、
WordpressをDockerで起動して、WP2StaticでAWS S3で静的ファイル化にして転送してます。

Dockerfile

FROM wordpress:latest

# Update Package
RUN apt-get update;

# WP CLI
WORKDIR /tmp
RUN curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
RUN chmod +x wp-cli.phar
RUN mv wp-cli.phar /usr/local/bin/wp

# WebP Express PLUGIN & image/webp FORMAT
RUN apt-get install -y \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libmcrypt-dev \
    libwebp6 libwebp-dev \
    libpng-dev \
    libxpm-dev \
    libzip-dev
RUN apt-get -y install gcc make
WORKDIR /tmp
RUN curl -L -O https://github.com/libgd/libgd/releases/download/gd-2.3.0/libgd-2.3.0.tar.gz
RUN tar vxzf ./libgd-2.3.0.tar.gz
WORKDIR /tmp/libgd-2.3.0
RUN ./configure
RUN make && make install
RUN docker-php-ext-configure gd --with-freetype --with-webp --with-webp-dir --with-jpeg --with-xpm && \
    docker-php-ext-install -j4 gd
RUN echo 'image/webp' >> /etc/mime.types

# PHP INI
COPY php.ini /usr/local/etc/php/php.ini
RUN chown root:staff /usr/local/etc/php/php.ini

WORKDIR /var/www/html

静的ファイル生成

$ docker exec -it docker_blog_wordpress /usr/local/bin/wp wp2static generate --path=/var/www/html/ --allow-root
Success: Generated static site archive in 362.119167 seconds
$ docker exec -it docker_blog_wordpress /usr/local/bin/wp wp2static deploy --path=/var/www/html/ --allow-root
Deploying static site via: s3
Success: Deployed to: s3 in 00:09:06
The post WordPressをDockerで運用する方法 first appeared on Shinya Furuwata Blog.]]>
phpをCLIで実行する https://blog.star-flare.com/2020/05/07/execute-php-on-terminal/ Wed, 06 May 2020 19:43:22 +0000 https://blog.star-flare.com/?p=1000 php -r "command" で可能 root@f1eb1edceb79:/var/www/html# php -r "print_r(gd_info());" Array ( […]

The post phpをCLIで実行する first appeared on Shinya Furuwata Blog.]]>
php -r "command" で可能
root@f1eb1edceb79:/var/www/html# php -r "print_r(gd_info());"
Array
(
    [GD Version] => bundled (2.1.0 compatible)
    [FreeType Support] =>
    [GIF Read Support] => 1
    [GIF Create Support] => 1
    [JPEG Support] =>
    [PNG Support] => 1
    [WBMP Support] => 1
    [XPM Support] =>
    [XBM Support] => 1
    [WebP Support] => 1
    [BMP Support] => 1
    [JIS-mapped Japanese Font Support] =>
)
The post phpをCLIで実行する first appeared on Shinya Furuwata Blog.]]>
Microsoft AutoUpdate app(Mac)の更新をOFFにする方法 https://blog.star-flare.com/2020/05/07/turn-off-microsoft-autoupdate-app-for-mac/ Wed, 06 May 2020 15:40:44 +0000 https://blog.star-flare.com/?p=993 Microsoft AutoUpdate app(Mac)の更新をOFFにする方法 なんかやたら出るようになったので 通知をOFFにする方法を探しました。 参考元はここです Macを起動した際にOFF sudo defa […]

The post Microsoft AutoUpdate app(Mac)の更新をOFFにする方法 first appeared on Shinya Furuwata Blog.]]>
Microsoft AutoUpdate app(Mac)の更新をOFFにする方法

なんかやたら出るようになったので
通知をOFFにする方法を探しました。

参考元はここです

Macを起動した際にOFF

sudo defaults write /Library/LaunchAgents/com.microsoft.update.agent.plist Disabled -bool YES
sudo defaults write /Library/LaunchAgents/com.microsoft.update.agent.plist RunAtLoad -bool NO
sudo chflags schg /Library/LaunchAgents/com.microsoft.update.agent.plist

フィードバックや他のMSアプリを起動した際にOFF

sudo defaults write com.microsoft.autoupdate2 'MAUFeedbackEnabled' -bool FALSE
sudo defaults write com.microsoft.autoupdate2 'SendAllTelemetryEnabled' -bool FALSE
sudo defaults write com.microsoft.autoupdate2 'StartDaemonOnAppLaunch' -bool FALSE

戻すとき

TRUE ← → FALSE
にする

The post Microsoft AutoUpdate app(Mac)の更新をOFFにする方法 first appeared on Shinya Furuwata Blog.]]>
SNSとSESのLamdaをテストするためのイベントサンプル https://blog.star-flare.com/2020/04/29/event_sample_lambda_test_with_sns_and_ses/ Wed, 29 Apr 2020 10:13:08 +0000 https://blog.star-flare.com/?p=990 はじめに AWSでSESを使用していると、バウンス対応などが必要になります。 SESのバウンスをSNSで通知させる AWSのドキュメント にあるとおり、 SESのNotificationsにSNSのTopicのARNをア […]

The post SNSとSESのLamdaをテストするためのイベントサンプル first appeared on Shinya Furuwata Blog.]]>
はじめに

AWSでSESを使用していると、バウンス対応などが必要になります。

SESのバウンスをSNSで通知させる

AWSのドキュメント
にあるとおり、
SESのNotificationsにSNSのTopicのARNをアタッチします。

arn:aws:sns:us-east-1:123456789012:ses-bounces-topic

といった感じになります。

バウンスメールを取得、保存

SNSのSubscribeで、Lambdaを実行し処理するケースが多いと想定しています。

Lambdaのコードは、AWS Serverless Application Repository に

  • ses-notification-python
  • ses-notification-nodejs
  • ses-notification-to-s3

色々とあるので各々カスタマイズし
S3に保存やDynamoDBに保存などしていくのがいいでしょう。

Lambdaを作った後

Lambdaを作った後は、テストで実行する流れになります。
テスト実行するには、テストイベントを用意する必要があります。
Lambdaでは、テストイベントでSNSのイベントのサンプルはありますが
SNSのメッセージにSESを含んだものはありません。

Amazon SES の Amazon SNS 通知の内容

を見て作るのですが
SNSのMessageに
SESの通知内容を文字列でエスケープしたり、用意するのに手間がかかります。
毎度忘れるので、忘備録として今回書き起こしました。

SNS通知にSESの内容を含むテストイベント

Bounce, Complaint, Deliveryも適当に入れてます。
このJSONをコピペして、必要に応じ削って使用する想定です。

{
  "Records": [
    {
      "EventSource": "aws:sns",
      "EventVersion": "1.0",
      "EventSubscriptionArn": "arn:aws:sns:us-east-1:{{{accountId}}}:ExampleTopic",
      "Sns": {
        "Type": "Notification",
        "MessageId": "95df01b4-ee98-5cb9-9903-4c221d41eb5e",
        "TopicArn": "arn:aws:sns:us-east-1:123456789012:ExampleTopic",
        "Subject": "example subject",
        "Message": "{ \"notificationType\": \"Bounce\", \"mail\": {  \"timestamp\": \"2018-10-08T14:05:45 +0000\",  \"messageId\": \"000001378603177f-7a5433e7-8edb-42ae-af10-f0181f34d6ee-000000\",  \"source\": \"sender@example.com\",  \"sourceArn\": \"arn:aws:ses:us-west-2:888888888888:identity/example.com\",  \"sourceIp\": \"127.0.3.0\",  \"sendingAccountId\": \"123456789012\",  \"destination\": [      \"recipient@example.com\"  ],  \"headersTruncated\": false,  \"headers\": [      {          \"name\": \"From\",          \"value\": \"\\\"Sender Name\\\" <sender@example.com>\"      },      {          \"name\": \"To\",          \"value\": \"\\\"Recipient Name\\\" <recipient@example.com>\"      },      {          \"name\": \"Message-ID\",          \"value\": \"custom-message-ID\"      },      {          \"name\": \"Subject\",          \"value\": \"Hello\"      },      {          \"name\": \"Content-Type\",          \"value\": \"text/plain; charset=\\\"UTF-8\\\"\"      },      {          \"name\": \"Content-Transfer-Encoding\",          \"value\": \"base64\"      },      {          \"name\": \"Date\",          \"value\": \"Mon, 08 Oct 2018 14:05:45 +0000\"      }  ],  \"commonHeaders\": {      \"from\": [          \"Sender Name <sender@example.com>\"      ],      \"date\": \"Mon, 08 Oct 2018 14:05:45 +0000\",      \"to\": [          \"Recipient Name <recipient@example.com>\"      ],      \"messageId\": \" custom-message-ID\",      \"subject\": \"Message sent using Amazon SES\"  }}, \"bounce\": {  \"bounceType\": \"Permanent\",  \"bounceSubType\": \"General\",  \"bouncedRecipients\": [      {          \"status\": \"5.0.0\",          \"action\": \"failed\",          \"diagnosticCode\": \"smtp; 550 user unknown\",          \"emailAddress\": \"recipient1@example.com\"      },      {          \"status\": \"4.0.0\",          \"action\": \"delayed\",          \"emailAddress\": \"recipient2@example.com\"      }  ],  \"reportingMTA\": \"example.com\",  \"timestamp\": \"2012-05-25T14:59:38.605Z\",  \"feedbackId\": \"000001378603176d-5a4b5ad9-6f30-4198-a8c3-b1eb0c270a1d-000000\",  \"remoteMtaIp\": \"127.0.2.0\"}, \"complaint\": {  \"userAgent\": \"AnyCompany Feedback Loop (V0.01)\",  \"complainedRecipients\": [      {          \"emailAddress\": \"recipient1@example.com\"      }  ],  \"complaintFeedbackType\": \"abuse\",  \"arrivalDate\": \"2009-12-03T04:24:21.000-05:00\",  \"timestamp\": \"2012-05-25T14:59:38.623Z\",  \"feedbackId\": \"000001378603177f-18c07c78-fa81-4a58-9dd1-fedc3cb8f49a-000000\"}, \"delivery\": {  \"timestamp\": \"2014-05-28T22:41:01.184Z\",  \"processingTimeMillis\": 546,  \"recipients\": [      \"success@simulator.amazonses.com\"  ],  \"smtpResponse\": \"250 ok:  Message 64111812 accepted\",  \"reportingMTA\": \"a8-70.smtp-out.amazonses.com\",  \"remoteMtaIp\": \"127.0.2.0\"} }",
        "Timestamp": "1970-01-01T00:00:00.000Z",
        "SignatureVersion": "1",
        "Signature": "EXAMPLE",
        "SigningCertUrl": "EXAMPLE",
        "UnsubscribeUrl": "EXAMPLE",
        "MessageAttributes": {
          "Test": {
            "Type": "String",
            "Value": "TestString"
          },
          "TestBinary": {
            "Type": "Binary",
            "Value": "TestBinary"
          }
        }
      }
    }
  ]
}
The post SNSとSESのLamdaをテストするためのイベントサンプル first appeared on Shinya Furuwata Blog.]]>