вторник, 14 декабря 2021 г.

OpenShift 4.9 oc login -u

 Необходимо было настроить авторизацию через oc cli


1. openssl genrsa 2048 > ca-key.pem


openssl req -new -x509 -nodes -days 365000 \

   -key ca-key.pem \

   -out ca-cert.pem


2. oc create secret tls admin --cert=ca-cert.crt --key=ca-key.pem -n openshift-config

суббота, 20 ноября 2021 г.

postgreSQL function uuid_generate_v4() does not exist

Была ошибка function uuid_generate_v4() does not exist при запуске микросервиса на Go.


Решение:

1. CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

2. \CONNECT my_database

3.  CREATE EXTENSION "uuid-ossp";

PostgreSQL grant access примеры

 1. Grant CONNECT to the database:

GRANT CONNECT ON DATABASE database_name TO username;

2. Grant USAGE on schema:

GRANT USAGE ON SCHEMA schema_name TO username;

3. Grant on all tables for DML statements: SELECT, INSERT, UPDATE, DELETE:

GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA schema_name TO username;

4. Grant all privileges on all tables in the schema:

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA schema_name TO username;

5. Grant all privileges on all sequences in the schema:

GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA schema_name TO username;

6. Grant all privileges on the database:

GRANT ALL PRIVILEGES ON DATABASE database_name TO username;

7. Grant permission to create database:

ALTER USER username CREATEDB;

8. Make a user superuser:

ALTER USER myuser WITH SUPERUSER;

9. Remove superuser status:

ALTER USER username WITH NOSUPERUSER;

Those statements above only affect the current existing tables. To apply to newly created tables, you need to use alter default. For example:

ALTER DEFAULT PRIVILEGES
FOR USER username
IN SCHEMA schema_name
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO username;

dropdb postgresql удалить базу

 Необходимо было удалить БД в postgreSQL, помогла утитита dropdb.


Пример:

dropdb -h x.x.x.x -U postgres -i -e database_name

вторник, 16 ноября 2021 г.

nmcli статический IP адрес

Необходимо было использовать статический IP в LiveCD RedHat CoreOS.


Решение:


nmcli con mod "Wired connection 1" ipv4.addresses 10.160.1.x/24

nmcli con mod "Wired connection 1" ipv4.gateway 10.160.1.x

nmcli con mod "Wired connection 1" ipv4.dns "10.201.1.x, 10.201.1.x"

nmcli con mod "Wired connection 1" ipv4.method manual 

nmcli conn show

воскресенье, 24 октября 2021 г.

Kubernetes 1.22 NFS mount example

Понадобилось смонтировать папку в k8s через NFS.


1. Поднимаем NFS-server


Пример /etc/exports

 /space/minio *(rw,sync,no_root_squash)


Прописываем команду

exportfs -rav - перемонтировать папки

exportfs -s - просмотр списка


2. Пример PV/PVC



kind: PersistentVolume
apiVersion: v1
metadata:
  name: redis-pv
spec:
  storageClassName: manual
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
nfs:
  path: /space/minio
  server: test.srv
  readOnly: false



apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: redis-pvc
  namespace: test
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

пятница, 22 октября 2021 г.

clickhouse reset default password

 Нужно было сбросить пароль от учеткой записи default в clickhouse 21.9.4


Решение.


1.  переходим в папку /etc/clickhouse-server/users.d/

2. генерим новый хэш, я воспользовался сервисом https://emn178.github.io/online-tools/sha256.html

2. в файле вставляем хэш нового пароля в строке <password_sha256_hex>

и перезапускаем clickhouse.


Результат:


clickhouse-client --password -h 127.0.0.1

ClickHouse client version 21.9.4.35 (official build).

Password for user (default): 

Connecting to 127.0.0.1:9000 as user default.

Connected to ClickHouse server version 21.9.4 revision 54449.


psql: error: FATAL: Ident authentication failed for user "postgres" - PostgreSQL 12.7

 не мог зайти в postgreSQL под дефолтной учеткой postgres.


Решение


1. бэкапим файл /var/lib/pgsql/data/pg_hba.conf

2. sudo su - postgres

3. psql

4. ALTER USER postgres WITH PASSWORD 'new_password';

5. в файле pg_hba.conf меняем значение trust на md5

6. в файле postgresql.conf меняем listen_address на свое значение


# TYPE  DATABASE        USER            ADDRESS                 METHOD


# "local" is for Unix domain socket connections only

local   all             all                                     peer

# IPv4 local connections:

host    all             all             10.0.0.0/8            md5

# IPv6 local connections:

host    all             all             ::1/128                 md5

# Allow replication connections from localhost, by a user with the

# replication privilege.

local   replication     all                                     peer

host    replication     all             127.0.0.1/32            md5

host    replication     all             ::1/128                 md5


6. пробуем логиниться.

psql -h 10.130.0.36 -U postgres postgres

Password for user postgres: 

psql (12.7)

Type "help" for help.


postgres=# 



CentOS 8 - PostgreSQL 12.7 изменить listen address

Понадобилось изменить адрес прослушивания порта в psql, для этого в файле по пути


/var/lib/pgsql/data/postgresql.conf


меняем директиву


listen_addresses = 'YOUR_IP' # what IP address(es) to listen on;


 и перезапускаем сервис.

суббота, 2 октября 2021 г.

Ubuntu LTS - do-release-upgrade command terminated with exit status 1

 При обновлении Ubuntu 18.04 LTS была ошибка command terminated with exit status 1 .



Помогло следующее:

LANG=C do-release-upgrade -d


Взято отсюда: http://lite-blog.ru/os/30-ubuntu-lts-do-release-upgrade-command-terminated-with-exit-status-1.html

пятница, 13 августа 2021 г.

Unable to register authentication agent: Timeout was reached RHEL/CentOS 7

Была ошибка Unable to register authentication agent: Timeout was reached при рестарте сервисов.

*Решение

# ps aux | grep polkit

polkitd     819  0.0  0.1 612232 12112 ?        Tsl  Jun21   0:07 /usr/lib/polkit-1/polkitd --no-debug

root      70900  0.0  0.0 112788  1000 pts/0    S+   13:26   0:00 grep --color=auto polkit

# systemctl stop polkit

# kill -9 819


четверг, 10 июня 2021 г.

AWS LoadBalancer Ingress Controller выносим наружу свой домен в EKS

 1. В качестве балансировщика я использую AWS load balancer controller.

 2. в EKS создаем новый Ingress.

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  namespace: default
  name: test1
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
spec:
  rules:
    - http:
        paths:
          - path: /
            backend:
              serviceName: test1
              servicePort: 5000

или

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  namespace: default
  name: test1
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
spec:
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              serviceName: test1
              servicePort: 5000







3.  Создаем CNAME запись у хостинг-провайдера и копируем в DNS зону А запись из AWS Load Balancer.






AWS EKS использование SSL сертификата с помощью AWS Certificate Manager

Необходимо было использовать SSL сертификаты для сервисов которые торчат наружу.


1.  Переходим в AWS Certificate Manager и жмем Request Certificate, я использовал DNS валидацию и добавляем в DNS зону нужный нам CNAME.



2. переходим в EKS и создаем нам нужный Ingress, в качестве балансировщика я использую aws-load-balancer-controller.


apiVersion: extensions/v1beta1

kind: Ingress

metadata:

  namespace: default

  name: test1

  annotations:

    kubernetes.io/ingress.class: alb

    alb.ingress.kubernetes.io/scheme: internet-facing

    alb.ingress.kubernetes.io/target-type: ip

    alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-west-2:xxxxx:certificate/xxxxxxx

spec:

  rules:

    - http:

        paths:

          - path: /

            backend:

              serviceName: test1

              servicePort: 5000


3. Из AWS Certificate Manager копируем нужный нам ARN и вставляем в annotation Ingress (выше отмечено красным)



4. Через минуты две проверяем созданный ingress в браузере.




четверг, 3 июня 2021 г.

Kubernetes 1.19 создание ServiceAccount с ограниченными правами.

Создаем Service Account с ограниченными правами в Kubernetes.

1.

kubectl create serviceaccount a-plus-sa --namespace=a-plus

kubectl create role a-plus-deployments-get --verb=get,list,watch,update --resource=deployments --resource=pods --namespace=a-plus

kubectl create rolebinding a-plus-user --role=a-plus-role --serviceaccount=a-plus:a-plus-sa --namespace=a-plus

kubectl auth can-i get pods -n=a-plus --as=system:serviceaccount:a-plus:a-plus-sa

вторник, 25 мая 2021 г.

понедельник, 24 мая 2021 г.

Kubernetes 1.19 Too many pods

 Была ошибка "Too many pods" в Kubernetes 1.19.


Проблему решил редактированием json конфига: /etc/kubernetes/kubelet/kubelet-config.json.

Значение maxPods  у меня было 29, я выставил значение 100.

и перезапускаем kubelet на всех нодах.

service kubelet restart && service kubelet status.

},

"maxPods": 100

}

суббота, 1 мая 2021 г.

GitLab удаляем старые джобы/GitLab delete old jobs

Понадобилось как-то удалить накопившие старые джобы. Для этого генерим Personal Token и вставляем в bash скрипт:

В этом  примере удаляются джобы начиная от 1 до 200.


#!bin/bash
END=200
for ((i=1;i<=END;i++)); do
     echo "job number $i is deleted" && curl --header "PRIVATE-TOKEN: 27a7s83fqf87Jayr" --request "DELETE" "https://gitlab.myserver.com/api/v4/projects/37/pipelines/$i"

done

среда, 24 февраля 2021 г.

OpenShift nodes not ready state

Redeploy node certificates in Openshift 3.10 and 3.11

Окружение

  • OpenShift Enterprise Container Platform
    • 3.10
    • 3.11

Вопрос

  • I redeployed a new CA and the nodes are no longer in a Ready State.
  • How do I manually force new certificates to get created.
  • Nodes are failing to renew their certificate with the following error:

понедельник, 15 февраля 2021 г.

postgresql chown: changing ownership of ‘/var/lib/postgresql/data’: Operation not permitted NFS mounting PV/PVC

Была ошибка в PostgreSQL при монтировании папки NFS в OpenShift 3.11.


На NFS сервере выставляем такие настройки для монтируемой папки в /etc/exports

/nfs/data *(rw,sync,no_subtree_check,no_root_squash)

и в OpenShift создаем service Account

oc create sa postgres
oc adm policy add-scc-to-user anyuid -z postgres

пятница, 29 января 2021 г.

Строим отказоустойчивый веб-сервис nginx и keepalived/setup failover web services with nginx keepalived

Настраиваем отказоустойчивый прокси на базе nginx и keepalived.

Представим, что у нас есть 2 ЦОД и у каждого ЦОД на front-end есть свой прокси-сервер, который принимает траффик и перекидывает на back-end.

суббота, 2 января 2021 г.

Подборка команд kubectl/kubect cheat sheet

 



Бинарный клиент kubectl написанный на Go предназначен для управления кластерами kubernetes.

Ниже привожу шпаргалки для работы с клиентом kubectl.

Также свои варианты использования kubectl пишите в комментариях.