TipsOnJenkinsX

Install

Install under archlinux:

# curl -L https://github.com/jenkins-x/jx/releases/download/v1.2.120/jx-linux-amd64.tar.gz | tar xzv 
# sudo mv jx /usr/local/bin

upgrading minikube:

# docker-machine-driver-kvm2

Now create the cluster via:

# jx create cluster minikube
? cpu (cores) 3
? Select driver: kvm2
WARNING: We cannot yet automate the installation of KVM with KVM2 driver - can you install this manually please?
Please see: https://www.linux-kvm.org/page/Downloads and https://github.com/kubernetes/minikube/blob/master/docs/drivers.md#kvm2-driver
Creating Minikube cluster...

chartmusuem

Install local executable file:

# curl -LO https://s3.amazonaws.com/chartmuseum/release/latest/bin/linux/amd64/chartmuseum
# chmod +x ./chartmuseum
# mv ./chartmuseum /usr/local/bin

Initialize with the local filesystem storage:

# sudo mkdir chartstorage
# sudo chartmuseum --debug --port=8988 --storage="local" --storage-local-rootdir="./chartstorage"

Now visit your http://localhost:8988 you could reach the chartmusuem.

Using chartmusuem:

# helm repo add chartmuseum http://localhost:8988
# helm update

Upload chart:

# git clone https://github.com/stakater/chart-mysql.git
# cd chart-mysql
# cd mysql
# helm lint
# helm package .
# curl -L --data-binary "@mysql-1.0.1.tgz" http://localhost:8988/api/charts

Now you could see the chart has been uploaded to your own chartmusuem.

OnCustomizeCentOSLiveCD

Preparation

A. Create local repository for centos installation:

Install createrepo_con archlinux:

# yaout createrepo_c

Create the repo for local installation:

# sudo mount -t iso9660 -o loop CentOS-7-x86_64-Everything-1804.iso /mnt2
# cd /mnt2
# find . | grep rpm$ | xargs -I % cp % /var/download/centos1804rpms
# cd /var/download/centos1804rpms
# createrepo_c .

Use this repo:

# mkdir /etc/yum.repos.d/back && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/back/
# vim /etc/yum.repos.d/base.repo 
[base]
name=base
baseurl=http://192.168.122.1/centos1804rpms
enabled=1
gpgcheck=0

B. Prepare kickstart repository

# git clone https://github.com/CentOS/sig-core-livemedia.git
# cd sig-core-livemedia
# cd kickstarts
# wget https://gist.githubusercontent.com/lunatilia/8a195ccb0b415cbbd94f/raw/e8ede17f331dc8fe43012e7e4f8123a02e6bedc8/centos-7-livedvd-jp.cfg

C. Edit the cfg file, the modified file is listed in following position:

Make system

In chroot terminal, do following:

#  yum remove -y libreoffice-gtk3-5.3.6.1-10.el7.x86_64 libreoffice-draw-5.3.6.1-10.el7.x86_64 libreoffice-ure-5.3.6.1-10.el7.x86_64 libreoffice-pyuno-5.3.6.1-10.el7.x86_64 libreoffice-xsltfilter-5.3.6.1-10.el7.x86_64 libreoffice-gtk2-5.3.6.1-10.el7.x86_64 libreoffice-graphicfilter-5.3.6.1-10.el7.x86_64 libreoffice-math-5.3.6.1-10.el7.x86_64 libreoffice-filters-5.3.6.1-10.el7.x86_64 libreoffice-data-5.3.6.1-10.el7.noarch libreoffice-core-5.3.6.1-10.el7.x86_64 libreoffice-pdfimport-5.3.6.1-10.el7.x86_64 libreoffice-calc-5.3.6.1-10.el7.x86_64 libreofficekit-5.3.6.1-10.el7.x86_64 libreoffice-ure-common-5.3.6.1-10.el7.noarch libreoffice-langpack-en-5.3.6.1-10.el7.x86_64 libreoffice-impress-5.3.6.1-10.el7.x86_64 libreoffice-opensymbol-fonts-5.3.6.1-10.el7.noarch libreoffice-x11-5.3.6.1-10.el7.x86_64 libreoffice-writer-5.3.6.1-10.el7.x86_64
# yum remove -y cheese
# cd /usr/local/
# scp root@192.192.189.128:/media/sdd/kvm_storage/ansible_kismatic/ansible_kismatic1110/compose.tar.gz .
# scp root@192.192.189.128:/media/sdd/kvm_storage/ansible_kismatic/ansible_kismatic1110/kismaticpkgs.tar.gz .
# scp root@192.192.189.128:/media/sdd/kvm_storage/ansible_kismatic/ansible_kismatic1110/images.tar.gz . 
# cd /var/lib
# scp root@192.192.189.128:/media/sdd/kvm_storage/ansible_kismatic/ansible_kismatic1110/portus.tar.gz .
# tar xzvf portus.tar.gz 
# rm -f portus.tar.gz 
# cd /usr/local/
# tar xzvf compose.tar.gz 
# tar xzvf images.tar.gz 
# tar xzvf kismaticpkgs.tar.gz 
# rm -f *.tar.gz
# cd /root/
# scp root@192.192.189.128:/media/sdd/kvm_storage/ansible_kismatic/ansible_kismatic1110/pipcache.tar.gz .
# tar xzvf pipcache.tar.gz 
# pip install --no-index --find-links /root/pipcache docker-compose
# rm -f pipcache.tar.gz 
# rm -rf pipcache/
# cd /bin/
# scp root@192.192.189.128:/media/sdb/docker/loaddocker.sh .
# chmod 777 loaddocker.sh 
# cat loaddocker.sh 
    if [[ $(sudo docker images | grep registry) ]]; then
        echo "there are files"
    else
        docker load</usr/local/images/nginx.tar.bz2
        docker load</usr/local/images/1.tar
        docker load</usr/local/images/2.tar
        docker load</usr/local/images/3.tar
        docker load</usr/local/images/4.tar
        docker run --name docker-nginx -p 8888:80 -d -v /usr/local/kismaticpkgs:/usr/share/nginx/html jrelva/nginx-autoindex
        sed -i s/10.168.100.145/`hostname -I|awk '{print $1}'`/g /usr/local/compose/docker-compose.yml
    fi

# cd /etc/systemd/system/
# scp root@192.192.189.128:/media/sdd/kvm_storage/ansible_kismatic/ansible_kismatic1110/mynginx.service .
# scp root@192.192.189.128:/media/sdd/kvm_storage/ansible_kismatic/ansible_kismatic1110/docker-infra.service .
# systemctl enable sshd.service
# cd /root
# scp root@192.192.189.128:/media/sdd/kvm_storage/ansible_kismatic/ansible_kismatic1110/kismatic.tar.gz .
# yum install -y ntp
# vim /etc/ntp.conf
# systemctl enable ntpd
# systemctl disable chronyd
# systemctl disable firewalld
# vi /etc/selinux/config
     disable the selinux configuration

Exit the chroot, the program will continue to build the iso.

boot-up the system

After bootup the system, install the os via clicking the live install icon on the desktop.

In newly installed system, do following things:

# systemctl enable docker
# systemctl start docker
# /bin/loaddocker.sh
# systemctl enable mynginx.service
# systemctl enable docker-infra.service
# reboot

Now you could check your installation.

Sometimes the boot will fail, I don’t know why, maybe because of the dracut issue?

SyncKismaticImages

搭建完Portus镜像后,如何重新初始化,并获得更新的kismatic镜像?这里记录了步骤。

清空已有镜像

运行以下命令,可以得到一个全新的portus镜像仓库:

# systemctl stop docker-infra.service
# cd /usr/local/compose
# docker-compose down
Stopping compose_nginx_1      ... done
Stopping compose_background_1 ... done
Stopping compose_registry_1   ... done
Stopping compose_portus_1     ... done
Stopping compose_db_1         ... done
Removing compose_nginx_1      ... done
Removing compose_background_1 ... done
Removing compose_registry_1   ... done
Removing compose_portus_1     ... done
Removing compose_db_1         ... done
Removing network compose_default
# cd /var/lib
# mv portus portus.back
# mkdir portus
# docker volume rm compose_static
# systemctl start docker-infra.service

配置新仓库

在打开浏览器访问portus仓库前,手动添加条目至/etc/hosts文件,IP地址需手动更改 :

$ sudo echo "192.192.189.53	portus.xxxx.com">>/etc/hosts

打开浏览器访问 https://portus.xxxx.com:

/images/2018_05_19_17_36_55_626x496.jpg

在页面弹出的提示中,填入以下参考值:

/images/2018_05_19_17_37_51_488x262.jpg

Team->Create new team, 创建一个名为 kismatic 的团队:

/images/2018_05_19_17_40_16_397x279.jpg

Admin->User->Create new user, 创建一个名为kismatic的用户:

/images/2018_05_19_17_41_59_434x313.jpg

创建好的用户如下所示:

/images/2018_05_19_17_42_41_1023x262.jpg

Team->members->Add members, 添加kismatic用户到kismatic组里,定义其角色为Contributer, 即可push/pull镜像:

/images/2018_05_19_17_43_32_640x169.jpg

创建一个新的命名空间,并绑定到kismatic组:

/images/2018_05_19_17_44_28_440x297.jpg

执行的步骤可以在portus的logs里看到:

/images/2018_05_19_17_45_14_584x314.jpg

kismatic v1.10同步镜像

https://github.com/apprenda/kismatic/releases下载kismatic对应的版本.

解压后的情况:

# pwd
/home/xxxx/code/kismatic1110
# ls
ansible  helm  kismatic  kubectl  provision

创建plan文件:

 ./kismatic install plan
Plan your Kubernetes cluster:
=> Number of etcd nodes [3]: 1
=> Number of master nodes [2]: 1
=> Number of worker nodes [3]: 1
=> Number of ingress nodes (optional, set to 0 if not required) [2]: 0
=> Number of storage nodes (optional, set to 0 if not required) [0]: 0
=> Number of existing files or directories to be copied [0]: 0

由此则产生了kismatic-cluster.yaml文件, 编辑对应的IP配置,可以参考已有的配置, 其中仓库的配置部分如下:

# vim kismatic-cluster.yaml
docker_registry:

  # IP or hostname and port for your registry.
  server: "portus.xxxx.com:5000/kismatic110"

  # Absolute path to the certificate authority that should be trusted when
  # connecting to your registry.
  CA: "/home/xxxxx/portus.xxxx.com.crt"

  # Leave blank for unauthenticated access.
  username: "kismatic"

  # Leave blank for unauthenticated access.
  password: "xxxxxxxx"

同步仓库:

# ./kismatic seed-registry --verbose

同步完毕以后,取回镜像包:

# systemctl stop docker-infra.service
# cd /var/lib/
# tar czvf portus.tar.gz portus/

rpm包取回

设置节点机的/etc/yum.conf下为保存rpm包,一次在线安装后,即可获得所有的rpm包。createrepo 后直接取回。

重组安装源

一次详细的重组步骤如下:

# 复制旧版本框架
cp -r ansible ansible_kismatic1110
cd ansible_kismatic1110
# 更新docker镜像源
rm -f portus.tar.gz
scp root@10.168.100.150:/var/lib/portus.tar.gz .
rm -f kismaticpkgs.tar.gz 
# 更新rpm源
scp -r root@10.168.100.150:/usr/local/kismaticpkgs.tar.gz .
# 更新kismatic部署框架
tar xzvf kismatic.tar.gz
cd kismatic/cluster00
rm -rf ./*
sudo cp -ar /media/sda5/Code/kismatic1110/* .
sudo rm -rf generated
sudo rm -rf ./runs/apply/*
sudo rm -rf ./runs/preflight/*
sudo rm -rf ./runs/smoketest/*
rm -f kismatic.tar.gz
sudo tar czvf kismatic.tar.gz kismatic
sudo rm -rf kismatic

重组后的大小:

# du -hs ansible_kismatic1110 
1.2G	ansible_kismatic1110

现在就可以用原有方法进行系统的部署了。

WorkingTipsOnPlayWithDockerUbuntu1804

Basic Environment

Ubuntu 18.04, minimum installation.

# vim /etc/netplan/01-netcfg.yaml 
	# This file describes the network interfaces available on your system
	# For more information, see netplan(5).
	network:
	 version: 2
	 renderer: networkd
	 ethernets:
	   eth0:
	     dhcp4: no
	     dhcp6: no
	     addresses: [192.192.189.114/24]
	     gateway4: 192.192.189.1
	     nameservers:
	       addresses: [223.5.5.5,180.76.76.76]
# sudo netplan --debug apply
# apt-get update && apt-get install -y docker.io docker-compose

Disable systemd-resolved:

# systemctl disable systemd-resolved.service
# systemctl stop systemd-resolved.service
# echo nameserver 192.168.0.15>/etc/resolv.conf
# chattr -e /etc/resolv.conf
# chattr +i /etc/resolv.conf

OnCustomizationOfUbuntuISO

Install cubic

Install cubic via:

# apt-add-repository ppa:cubic-wizard/release
# apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 6494C6D6997C215E
# apt update && apt install cubic

Custom Packages

Install docker and docker-compose

# apt-get install -y docker.io docker-compose openssh-server
# systemctl enable docker

Pre-load docker images:

# vim /bin/loaddocker.sh
if [[ $(sudo docker images | grep registry) ]]; then
    echo "there are files"
else
    docker load</usr/local/images/1.tar
    docker load</usr/local/images/2.tar
    docker load</usr/local/images/3.tar
    docker load</usr/local/images/4.tar
fi
# chmod 777 /bin/loaddocker.sh

Add dockerload service

# vim /etc/systemd/system/dockerload.service 
[Unit]
Description=Docker load
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/bin/loaddocker.sh
ExecStop=/usr/bin/echo hello

[Install]
WantedBy=multi-user.target

Add this command to systemd:

# vim /etc/systemd/system/docker-infra.service
[Unit]
Description=Docker infra
Requires=docker.service
After=dockerload.service

[Service]
WorkingDirectory=/usr/local/compose/
Type=idle
Restart=always
# Remove old container items
ExecStartPre=/usr/bin/docker-compose -f /usr/local/compose/docker-compose.yml down
# Compose up
ExecStart=/usr/bin/docker-compose -f /usr/local/compose/docker-compose.yml up
# Compose stop
ExecStop=/usr/bin/docker-compose -f /usr/local/compose/docker-compose.yml stop

[Install]
WantedBy=multi-user.target

# systemctl enable docker-infra.service

Change the default interface to eth0/eth1, etc.

# vim /etc/default/grub
net.ifnames=0 biosdevname=0
# update-grub

Remove unnecessary packages

Following:

Amazon
Libreoffice
Mahjongg
Mines
Shotwell
Sudoku
totem
totem-common
vino
transmission-gtk
transmission-common
remmina
eog

Disable ufw:

# ufw disable

Remove command:

# apt-get purge   aisleriot eog gnome-mahjongg gnome-mines gnome-sudoku hplip libreoffice-avmedia-backend-gstreamer
  libreoffice-base-core libreoffice-calc libreoffice-common libreoffice-core libreoffice-draw
  libreoffice-gnome libreoffice-gtk3 libreoffice-impress libreoffice-math libreoffice-ogltrans
  libreoffice-pdfimport libreoffice-style-breeze libreoffice-style-galaxy libreoffice-style-tango
  libreoffice-writer  python3-uno remmina remmina-plugin-rdp
  remmina-plugin-secret remmina-plugin-vnc thunderbird thunderbird-gnome-support totem totem-common
  totem-plugins transmission-common transmission-gtk  vino

tips for centos

if [[ $(sudo docker images | grep registry) ]]; then
    echo "there are files"
else
    docker load</usr/local/images/nginx.tar.bz2
    docker load</usr/local/images/1.tar
    docker load</usr/local/images/2.tar
    docker load</usr/local/images/3.tar
    docker load</usr/local/images/4.tar
    docker run --name docker-nginx -p 8888:80 -d -v /usr/local/kismaticpkgs:/usr/share/nginx/html jrelva/nginx-autoindex
    sed -i s/10.168.100.145/`hostname -I|awk '{print $1}'`/g /usr/local/compose/docker-compose.yml
fi

Add service:

# vim /etc/systemd/system/mynginx.service 
[Unit]
Description=mynginx
Requires=docker.service
After=docker-infra.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a docker-nginx
ExecStop=/usr/bin/docker stop -t 2 docker-nginx

[Install]
WantedBy=multi-user.target