This tutorial uses Homebrew to install colima and Docker.
It was tested on Apple MacBook Pro (13-inch, M1, 2020) 8G and macOS Monterey version 12.1 (21C52).
Make sure you have fully uninstall any versions of Docker. You can check using:
As painless does not support \n
, as per https://www.elastic.co/guide/en/elasticsearch/painless/current/painless-literals.html
you have to get ASCII newline 0x0a
, cast to char and then cast to string https://www.elastic.co/guide/en/elasticsearch/painless/current/painless-casting.html#character-string-casting
So to split your string in Painless on newline you have to
_source['message'].splitOnToken((String)(char)0x0a);
And yes that sounds retarted.
This is my current "dev workflow" for quickly bootstrapping an Spring app on a Kubernetes cluster. The general approach is polyglot but you will need to use something like https://buildpacks.io instead of Jib to support non-JVM projects
This example uses skaffold
and kapp
so you will need to install from https://skaffold.dev/docs/install/ & https://k14s.io/
You will also need kubectl
installed and a Kubernetes cluster targetted. You can use Minikube, Kind or K3S for lightweight, local Kubernetes environment
export APPNAME=bootstrap-k8s
export DOCKER_REGISTRY=ojhughes
@export ENIS=$$(aws ec2 describe-network-interfaces --filters "Name=status,Values=available" | jq ".NetworkInterfaces[] | select(.VpcId == \"$${VPC_ID}\") | .NetworkInterfaceId"); \ | |
if [[ ! -z $${DRY_RUN} ]]; then \ | |
echo "Running in dry run mode! No changes will be made. The following ENIs would be deleted:"; \ | |
echo $${ENIS}; \ | |
exit 0; \ | |
else \ | |
for eni in $$(echo $${ENIS}| tr -d "\""); \ | |
do \ | |
aws ec2 delete-network-interface --network-interface-id $${eni}; \ | |
done; \ |
# Luke's config for the Zoomer Shell | |
# Enable colors and change prompt: | |
autoload -U colors && colors | |
PS1="%B%{$fg[red]%}[%{$fg[yellow]%}%n%{$fg[green]%}@%{$fg[blue]%}%M %{$fg[magenta]%}%~%{$fg[red]%}]%{$reset_color%}$%b " | |
# History in cache directory: | |
HISTSIZE=10000 | |
SAVEHIST=10000 | |
HISTFILE=~/.cache/zsh/history |
#Spin up Kubernetes control plane as part of before_script, and destroys it using after_script | |
#Some custom logic to get to the right ip address | |
#Requres the gitlab docker runner, with "pass-thru" to the host docker socket. | |
stages: | |
- test | |
image: python:3.6.6 #the docker image you run in needs Docker installed, and access to the host docker socket. | |
test_integration_k8s: | |
tags: |
#!/bin/bash | |
# Get directory of script | |
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" | |
if [[ $# -ne 1 ]] | |
then | |
echo "ERROR: This script expects the namespace name to be given as an argument" | |
echo "e.g. ./ecr-cred-updater.sh my-namespace" | |
exit 1 |
variables: | |
ANDROID_COMPILE_SDK: "28" | |
test:unit: | |
image: circleci/android:api-${ANDROID_COMPILE_SDK} | |
cache: | |
key: gradle-cache | |
paths: [ .gradle ] | |
variables: | |
# GRADLE_OPTS: "-Dorg.gradle.daemon=false" |
Did you know that you can have multiple helm tillers running in a cluster?
This may actually be useful to us for both security as well as isolating what our cluster ops team does from what our customers can do.
Helm security is such that "If you can talk to tiller, you can use that tiller" To be able to contact tiller, one needs to be able to create a pod in the namespace tiller resides in. Otherwise you will get an error message like:
#!/bin/bash | |
### your registry must have the following environment var set | |
# REGISTRY_STORAGE_DELETE_ENABLED=true | |
### replace YOUR_SERVER with corect info | |
REGISTRY_URL=https://YOUR_SERVER:5000 | |
### host registry volume folder | |
REGISTRY_ROOT=/registry | |
### container to execute garbage-collect | |
CONTAINER_NAME=services_registry.1 |